starting test --> { "jsonrpc": "2.0", "params": { "rootUri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0", "processId": 42086, "rootPath": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0", "capabilities": { "window": { "workDoneProgress": true }, "workspace": { "didChangeWatchedFiles": { "dynamicRegistration": true }, "symbol": { "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] }, "dynamicRegistration": true }, "workspaceEdit": { "documentChanges": true }, "didChangeConfiguration": { "dynamicRegistration": true }, "applyEdit": true, "executeCommand": { "dynamicRegistration": true }, "workspaceFolders": true, "configuration": true }, "textDocument": { "completion": { "dynamicRegistration": true, "contextSupport": true, "completionItem": { "tagSupport": { "valueSet": [ 1 ] }, "preselectSupport": true, "commitCharactersSupport": true, "snippetSupport": true, "deprecatedSupport": true, "documentationFormat": [ "plaintext", "markdown" ] }, "completionItemKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ] } }, "documentHighlight": { "dynamicRegistration": true }, "synchronization": { "dynamicRegistration": true, "willSave": true, "didSave": true, "willSaveWaitUntil": true }, "definition": { "dynamicRegistration": true }, "signatureHelp": { "dynamicRegistration": true, "signatureInformation": { "ocumentationFormat": [ "plaintext", "markdown" ] } }, "references": { "dynamicRegistration": true }, "rangeFormatting": { "dynamicRegistration": true }, "codeAction": { "codeActionLiteralSupport": { "codeActionKind": { "valueSet": [ "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" ] } }, "dynamicRegistration": true }, "foldingRange": { "lineFoldingOnly": false, "dynamicRegistration": true }, "onTypeFormatting": { "dynamicRegistration": true }, "codeLens": { "dynamicRegistration": true }, "documentSymbol": { "hierarchicalDocumentSymbolSupport": true, "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] }, "dynamicRegistration": true }, "colorProvider": { "dynamicRegistration": true }, "documentLink": { "dynamicRegistration": true }, "formatting": { "dynamicRegistration": true }, "implementation": { "dynamicRegistration": true }, "typeDefinition": { "dynamicRegistration": true }, "publishDiagnostics": { "tagSupport": { "valueSet": [ 1, 2 ] }, "relatedInformation": true }, "rename": { "prepareSupport": true, "dynamicRegistration": true }, "hover": { "contentFormat": [ "plaintext", "markdown" ], "dynamicRegistration": true } } }, "trace": "off" }, "method": "initialize", "id": 0 } ghcide version: 0.4.0 (GHC: 8.6) (PATH: /home/vsts/work/1/s/bench-hist/upstream/ghcide) (GIT hash: d64397b5d399933833b5b668ac8ad2cf51f4d17a) Starting LSP server... If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option! Started LSP server in 0.00s [INFO] Registering ide configuration: IdeConfiguration {workspaceFolders = fromList [NormalizedUri 8113827995357525795 "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0"], clientSettings = hashed Nothing} <-- { "tag": "RspInitialize", "contents": { "result": { "capabilities": { "typeDefinitionProvider": true, "foldingRangeProvider": false, "textDocumentSync": { "openClose": true, "change": 2, "save": {} }, "workspace": { "workspaceFolders": { "supported": true, "changeNotifications": true } }, "implementationProvider": true, "executeCommandProvider": { "commands": [ "42102:ghcide:typesignature.add" ] }, "renameProvider": false, "colorProvider": false, "definitionProvider": true, "hoverProvider": true, "codeActionProvider": true, "completionProvider": { "triggerCharacters": [ "." ], "resolveProvider": false }, "codeLensProvider": {}, "documentSymbolProvider": true } }, "jsonrpc": "2.0", "id": 0 } } --> { "jsonrpc": "2.0", "params": {}, "method": "initialized" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "languageId": "haskell", "text": "{-# LANGUAGE FlexibleContexts #-}\n{-# LANGUAGE RankNTypes #-}\n{-# LANGUAGE LambdaCase #-}\n-----------------------------------------------------------------------------\n-- |\n-- Module : Distribution.Simple\n-- Copyright : Isaac Jones 2003-2005\n-- License : BSD3\n--\n-- Maintainer : cabal-devel@haskell.org\n-- Portability : portable\n--\n-- This is the command line front end to the Simple build system. When given\n-- the parsed command-line args and package information, is able to perform\n-- basic commands like configure, build, install, register, etc.\n--\n-- This module exports the main functions that Setup.hs scripts use. It\n-- re-exports the 'UserHooks' type, the standard entry points like\n-- 'defaultMain' and 'defaultMainWithHooks' and the predefined sets of\n-- 'UserHooks' that custom @Setup.hs@ scripts can extend to add their own\n-- behaviour.\n--\n-- This module isn't called \\\"Simple\\\" because it's simple. Far from\n-- it. It's called \\\"Simple\\\" because it does complicated things to\n-- simple software.\n--\n-- The original idea was that there could be different build systems that all\n-- presented the same compatible command line interfaces. There is still a\n-- \"Distribution.Make\" system but in practice no packages use it.\n\n{-\nWork around this warning:\nlibraries/Cabal/Distribution/Simple.hs:78:0:\n Warning: In the use of `runTests'\n (imported from Distribution.Simple.UserHooks):\n Deprecated: \"Please use the new testing interface instead!\"\n-}\n{-# OPTIONS_GHC -fno-warn-deprecations #-}\n\nmodule Distribution.Simple (\n module Distribution.Package,\n module Distribution.Version,\n module Distribution.License,\n module Distribution.Simple.Compiler,\n module Language.Haskell.Extension,\n -- * Simple interface\n defaultMain, defaultMainNoRead, defaultMainArgs,\n -- * Customization\n UserHooks(..), Args,\n defaultMainWithHooks, defaultMainWithHooksArgs,\n defaultMainWithHooksNoRead, defaultMainWithHooksNoReadArgs,\n -- ** Standard sets of hooks\n simpleUserHooks,\n autoconfUserHooks,\n emptyUserHooks,\n ) where\n\nimport Control.Exception (try)\n\nimport Prelude ()\nimport Distribution.Compat.Prelude\n\n-- local\nimport Distribution.Simple.Compiler hiding (Flag)\nimport Distribution.Simple.UserHooks\nimport Distribution.Package\nimport Distribution.PackageDescription hiding (Flag)\nimport Distribution.PackageDescription.Configuration\nimport Distribution.Simple.Program\nimport Distribution.Simple.Program.Db\nimport Distribution.Simple.PreProcess\nimport Distribution.Simple.Setup\nimport Distribution.Simple.Command\n\nimport Distribution.Simple.Build\nimport Distribution.Simple.SrcDist\nimport Distribution.Simple.Register\n\nimport Distribution.Simple.Configure\n\nimport Distribution.Simple.LocalBuildInfo\nimport Distribution.Simple.Bench\nimport Distribution.Simple.BuildPaths\nimport Distribution.Simple.Test\nimport Distribution.Simple.Install\nimport Distribution.Simple.Haddock\nimport Distribution.Simple.Doctest\nimport Distribution.Simple.Utils\nimport Distribution.Utils.NubList\nimport Distribution.Verbosity\nimport Language.Haskell.Extension\nimport Distribution.Version\nimport Distribution.License\nimport Distribution.Pretty\nimport Distribution.System (buildPlatform)\n\n-- Base\nimport System.Environment (getArgs, getProgName)\nimport System.Directory (removeFile, doesFileExist\n ,doesDirectoryExist, removeDirectoryRecursive)\nimport System.Exit (exitWith,ExitCode(..))\nimport System.FilePath (searchPathSeparator, takeDirectory, (), splitDirectories, dropDrive)\nimport Distribution.Compat.ResponseFile (expandResponse)\nimport Distribution.Compat.Directory (makeAbsolute)\nimport Distribution.Compat.Environment (getEnvironment)\nimport Distribution.Compat.GetShortPathName (getShortPathName)\n\nimport Data.List (unionBy, (\\\\))\n\nimport Distribution.PackageDescription.Parsec\n\n-- | A simple implementation of @main@ for a Cabal setup script.\n-- It reads the package description file using IO, and performs the\n-- action specified on the command line.\ndefaultMain :: IO ()\ndefaultMain = getArgs >>= defaultMainHelper simpleUserHooks\n\n-- | A version of 'defaultMain' that is passed the command line\n-- arguments, rather than getting them from the environment.\ndefaultMainArgs :: [String] -> IO ()\ndefaultMainArgs = defaultMainHelper simpleUserHooks\n\n-- | A customizable version of 'defaultMain'.\ndefaultMainWithHooks :: UserHooks -> IO ()\ndefaultMainWithHooks hooks = getArgs >>= defaultMainHelper hooks\n\n-- | A customizable version of 'defaultMain' that also takes the command\n-- line arguments.\ndefaultMainWithHooksArgs :: UserHooks -> [String] -> IO ()\ndefaultMainWithHooksArgs = defaultMainHelper\n\n-- | Like 'defaultMain', but accepts the package description as input\n-- rather than using IO to read it.\ndefaultMainNoRead :: GenericPackageDescription -> IO ()\ndefaultMainNoRead = defaultMainWithHooksNoRead simpleUserHooks\n\n-- | A customizable version of 'defaultMainNoRead'.\ndefaultMainWithHooksNoRead :: UserHooks -> GenericPackageDescription -> IO ()\ndefaultMainWithHooksNoRead hooks pkg_descr =\n getArgs >>=\n defaultMainHelper hooks { readDesc = return (Just pkg_descr) }\n\n-- | A customizable version of 'defaultMainNoRead' that also takes the\n-- command line arguments.\n--\n-- @since 2.2.0.0\ndefaultMainWithHooksNoReadArgs :: UserHooks -> GenericPackageDescription -> [String] -> IO ()\ndefaultMainWithHooksNoReadArgs hooks pkg_descr =\n defaultMainHelper hooks { readDesc = return (Just pkg_descr) }\n\ndefaultMainHelper :: UserHooks -> Args -> IO ()\ndefaultMainHelper hooks args = topHandler $ do\n args' <- expandResponse args\n case commandsRun (globalCommand commands) commands args' of\n CommandHelp help -> printHelp help\n CommandList opts -> printOptionsList opts\n CommandErrors errs -> printErrors errs\n CommandReadyToGo (flags, commandParse) ->\n case commandParse of\n _ | fromFlag (globalVersion flags) -> printVersion\n | fromFlag (globalNumericVersion flags) -> printNumericVersion\n CommandHelp help -> printHelp help\n CommandList opts -> printOptionsList opts\n CommandErrors errs -> printErrors errs\n CommandReadyToGo action -> action\n\n where\n printHelp help = getProgName >>= putStr . help\n printOptionsList = putStr . unlines\n printErrors errs = do\n putStr (intercalate \"\\n\" errs)\n exitWith (ExitFailure 1)\n printNumericVersion = putStrLn $ prettyShow cabalVersion\n printVersion = putStrLn $ \"Cabal library version \"\n ++ prettyShow cabalVersion\n\n progs = addKnownPrograms (hookedPrograms hooks) defaultProgramDb\n commands =\n [configureCommand progs `commandAddAction`\n \\fs as -> configureAction hooks fs as >> return ()\n ,buildCommand progs `commandAddAction` buildAction hooks\n ,showBuildInfoCommand progs `commandAddAction` showBuildInfoAction hooks\n ,replCommand progs `commandAddAction` replAction hooks\n ,installCommand `commandAddAction` installAction hooks\n ,copyCommand `commandAddAction` copyAction hooks\n ,doctestCommand `commandAddAction` doctestAction hooks\n ,haddockCommand `commandAddAction` haddockAction hooks\n ,cleanCommand `commandAddAction` cleanAction hooks\n ,sdistCommand `commandAddAction` sdistAction hooks\n ,hscolourCommand `commandAddAction` hscolourAction hooks\n ,registerCommand `commandAddAction` registerAction hooks\n ,unregisterCommand `commandAddAction` unregisterAction hooks\n ,testCommand `commandAddAction` testAction hooks\n ,benchmarkCommand `commandAddAction` benchAction hooks\n ]\n\n-- | Combine the preprocessors in the given hooks with the\n-- preprocessors built into cabal.\nallSuffixHandlers :: UserHooks\n -> [PPSuffixHandler]\nallSuffixHandlers hooks\n = overridesPP (hookedPreProcessors hooks) knownSuffixHandlers\n where\n overridesPP :: [PPSuffixHandler] -> [PPSuffixHandler] -> [PPSuffixHandler]\n overridesPP = unionBy (\\x y -> fst x == fst y)\n\nconfigureAction :: UserHooks -> ConfigFlags -> Args -> IO LocalBuildInfo\nconfigureAction hooks flags args = do\n distPref <- findDistPrefOrDefault (configDistPref flags)\n let flags' = flags { configDistPref = toFlag distPref\n , configArgs = args }\n\n -- See docs for 'HookedBuildInfo'\n pbi <- preConf hooks args flags'\n\n (mb_pd_file, pkg_descr0) <- confPkgDescr hooks verbosity\n (flagToMaybe (configCabalFilePath flags))\n\n let epkg_descr = (pkg_descr0, pbi)\n\n localbuildinfo0 <- confHook hooks epkg_descr flags'\n\n -- remember the .cabal filename if we know it\n -- and all the extra command line args\n let localbuildinfo = localbuildinfo0 {\n pkgDescrFile = mb_pd_file,\n extraConfigArgs = args\n }\n writePersistBuildConfig distPref localbuildinfo\n\n let pkg_descr = localPkgDescr localbuildinfo\n postConf hooks args flags' pkg_descr localbuildinfo\n return localbuildinfo\n where\n verbosity = fromFlag (configVerbosity flags)\n\nconfPkgDescr :: UserHooks -> Verbosity -> Maybe FilePath\n -> IO (Maybe FilePath, GenericPackageDescription)\nconfPkgDescr hooks verbosity mb_path = do\n mdescr <- readDesc hooks\n case mdescr of\n Just descr -> return (Nothing, descr)\n Nothing -> do\n pdfile <- case mb_path of\n Nothing -> defaultPackageDesc verbosity\n Just path -> return path\n info verbosity \"Using Parsec parser\"\n descr <- readGenericPackageDescription verbosity pdfile\n return (Just pdfile, descr)\n\nbuildAction :: UserHooks -> BuildFlags -> Args -> IO ()\nbuildAction hooks flags args = do\n distPref <- findDistPrefOrDefault (buildDistPref flags)\n let verbosity = fromFlag $ buildVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { buildDistPref = toFlag distPref\n , buildCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n\n progs <- reconfigurePrograms verbosity\n (buildProgramPaths flags')\n (buildProgramArgs flags')\n (withPrograms lbi)\n\n hookedAction verbosity preBuild buildHook postBuild\n (return lbi { withPrograms = progs })\n hooks flags' { buildArgs = args } args\n\nshowBuildInfoAction :: UserHooks -> ShowBuildInfoFlags -> Args -> IO ()\nshowBuildInfoAction hooks (ShowBuildInfoFlags flags fileOutput) args = do\n distPref <- findDistPrefOrDefault (buildDistPref flags)\n let verbosity = fromFlag $ buildVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { buildDistPref = toFlag distPref\n , buildCabalFilePath = maybeToFlag (cabalFilePath lbi)\n }\n\n progs <- reconfigurePrograms verbosity\n (buildProgramPaths flags')\n (buildProgramArgs flags')\n (withPrograms lbi)\n\n pbi <- preBuild hooks args flags'\n let lbi' = lbi { withPrograms = progs }\n pkg_descr0 = localPkgDescr lbi'\n pkg_descr = updatePackageDescription pbi pkg_descr0\n -- TODO: Somehow don't ignore build hook?\n buildInfoString <- showBuildInfo pkg_descr lbi' flags\n\n case fileOutput of\n Nothing -> putStr buildInfoString\n Just fp -> writeFile fp buildInfoString\n\n postBuild hooks args flags' pkg_descr lbi'\n\nreplAction :: UserHooks -> ReplFlags -> Args -> IO ()\nreplAction hooks flags args = do\n distPref <- findDistPrefOrDefault (replDistPref flags)\n let verbosity = fromFlag $ replVerbosity flags\n flags' = flags { replDistPref = toFlag distPref }\n\n lbi <- getBuildConfig hooks verbosity distPref\n progs <- reconfigurePrograms verbosity\n (replProgramPaths flags')\n (replProgramArgs flags')\n (withPrograms lbi)\n\n -- As far as I can tell, the only reason this doesn't use\n -- 'hookedActionWithArgs' is because the arguments of 'replHook'\n -- takes the args explicitly. UGH. -- ezyang\n pbi <- preRepl hooks args flags'\n let pkg_descr0 = localPkgDescr lbi\n sanityCheckHookedBuildInfo verbosity pkg_descr0 pbi\n let pkg_descr = updatePackageDescription pbi pkg_descr0\n lbi' = lbi { withPrograms = progs\n , localPkgDescr = pkg_descr }\n replHook hooks pkg_descr lbi' hooks flags' args\n postRepl hooks args flags' pkg_descr lbi'\n\nhscolourAction :: UserHooks -> HscolourFlags -> Args -> IO ()\nhscolourAction hooks flags args = do\n distPref <- findDistPrefOrDefault (hscolourDistPref flags)\n let verbosity = fromFlag $ hscolourVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { hscolourDistPref = toFlag distPref\n , hscolourCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n\n hookedAction verbosity preHscolour hscolourHook postHscolour\n (getBuildConfig hooks verbosity distPref)\n hooks flags' args\n\ndoctestAction :: UserHooks -> DoctestFlags -> Args -> IO ()\ndoctestAction hooks flags args = do\n distPref <- findDistPrefOrDefault (doctestDistPref flags)\n let verbosity = fromFlag $ doctestVerbosity flags\n flags' = flags { doctestDistPref = toFlag distPref }\n\n lbi <- getBuildConfig hooks verbosity distPref\n progs <- reconfigurePrograms verbosity\n (doctestProgramPaths flags')\n (doctestProgramArgs flags')\n (withPrograms lbi)\n\n hookedAction verbosity preDoctest doctestHook postDoctest\n (return lbi { withPrograms = progs })\n hooks flags' args\n\nhaddockAction :: UserHooks -> HaddockFlags -> Args -> IO ()\nhaddockAction hooks flags args = do\n distPref <- findDistPrefOrDefault (haddockDistPref flags)\n let verbosity = fromFlag $ haddockVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { haddockDistPref = toFlag distPref\n , haddockCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n\n progs <- reconfigurePrograms verbosity\n (haddockProgramPaths flags')\n (haddockProgramArgs flags')\n (withPrograms lbi)\n\n hookedAction verbosity preHaddock haddockHook postHaddock\n (return lbi { withPrograms = progs })\n hooks flags' { haddockArgs = args } args\n\ncleanAction :: UserHooks -> CleanFlags -> Args -> IO ()\ncleanAction hooks flags args = do\n distPref <- findDistPrefOrDefault (cleanDistPref flags)\n\n elbi <- tryGetBuildConfig hooks verbosity distPref\n let flags' = flags { cleanDistPref = toFlag distPref\n , cleanCabalFilePath = case elbi of\n Left _ -> mempty\n Right lbi -> maybeToFlag (cabalFilePath lbi)}\n\n pbi <- preClean hooks args flags'\n\n (_, ppd) <- confPkgDescr hooks verbosity Nothing\n -- It might seem like we are doing something clever here\n -- but we're really not: if you look at the implementation\n -- of 'clean' in the end all the package description is\n -- used for is to clear out @extra-tmp-files@. IMO,\n -- the configure script goo should go into @dist@ too!\n -- -- ezyang\n let pkg_descr0 = flattenPackageDescription ppd\n -- We don't sanity check for clean as an error\n -- here would prevent cleaning:\n --sanityCheckHookedBuildInfo verbosity pkg_descr0 pbi\n let pkg_descr = updatePackageDescription pbi pkg_descr0\n\n cleanHook hooks pkg_descr () hooks flags'\n postClean hooks args flags' pkg_descr ()\n where\n verbosity = fromFlag (cleanVerbosity flags)\n\ncopyAction :: UserHooks -> CopyFlags -> Args -> IO ()\ncopyAction hooks flags args = do\n distPref <- findDistPrefOrDefault (copyDistPref flags)\n let verbosity = fromFlag $ copyVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { copyDistPref = toFlag distPref\n , copyCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n hookedAction verbosity preCopy copyHook postCopy\n (getBuildConfig hooks verbosity distPref)\n hooks flags' { copyArgs = args } args\n\ninstallAction :: UserHooks -> InstallFlags -> Args -> IO ()\ninstallAction hooks flags args = do\n distPref <- findDistPrefOrDefault (installDistPref flags)\n let verbosity = fromFlag $ installVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { installDistPref = toFlag distPref\n , installCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n hookedAction verbosity preInst instHook postInst\n (getBuildConfig hooks verbosity distPref)\n hooks flags' args\n\nsdistAction :: UserHooks -> SDistFlags -> Args -> IO ()\nsdistAction hooks flags _args = do\n distPref <- findDistPrefOrDefault (sDistDistPref flags)\n let pbi = emptyHookedBuildInfo\n\n mlbi <- maybeGetPersistBuildConfig distPref\n\n -- NB: It would be TOTALLY WRONG to use the 'PackageDescription'\n -- store in the 'LocalBuildInfo' for the rest of @sdist@, because\n -- that would result in only the files that would be built\n -- according to the user's configure being packaged up.\n -- In fact, it is not obvious why we need to read the\n -- 'LocalBuildInfo' in the first place, except that we want\n -- to do some architecture-independent preprocessing which\n -- needs to be configured. This is totally awful, see\n -- GH#130.\n\n (_, ppd) <- confPkgDescr hooks verbosity Nothing\n\n let pkg_descr0 = flattenPackageDescription ppd\n sanityCheckHookedBuildInfo verbosity pkg_descr0 pbi\n let pkg_descr = updatePackageDescription pbi pkg_descr0\n mlbi' = fmap (\\lbi -> lbi { localPkgDescr = pkg_descr }) mlbi\n\n sdist pkg_descr mlbi' flags srcPref (allSuffixHandlers hooks)\n where\n verbosity = fromFlag (sDistVerbosity flags)\n\ntestAction :: UserHooks -> TestFlags -> Args -> IO ()\ntestAction hooks flags args = do\n distPref <- findDistPrefOrDefault (testDistPref flags)\n let verbosity = fromFlag $ testVerbosity flags\n flags' = flags { testDistPref = toFlag distPref }\n\n hookedActionWithArgs verbosity preTest testHook postTest\n (getBuildConfig hooks verbosity distPref)\n hooks flags' args\n\nbenchAction :: UserHooks -> BenchmarkFlags -> Args -> IO ()\nbenchAction hooks flags args = do\n distPref <- findDistPrefOrDefault (benchmarkDistPref flags)\n let verbosity = fromFlag $ benchmarkVerbosity flags\n flags' = flags { benchmarkDistPref = toFlag distPref }\n hookedActionWithArgs verbosity preBench benchHook postBench\n (getBuildConfig hooks verbosity distPref)\n hooks flags' args\n\nregisterAction :: UserHooks -> RegisterFlags -> Args -> IO ()\nregisterAction hooks flags args = do\n distPref <- findDistPrefOrDefault (regDistPref flags)\n let verbosity = fromFlag $ regVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { regDistPref = toFlag distPref\n , regCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n hookedAction verbosity preReg regHook postReg\n (getBuildConfig hooks verbosity distPref)\n hooks flags' { regArgs = args } args\n\nunregisterAction :: UserHooks -> RegisterFlags -> Args -> IO ()\nunregisterAction hooks flags args = do\n distPref <- findDistPrefOrDefault (regDistPref flags)\n let verbosity = fromFlag $ regVerbosity flags\n lbi <- getBuildConfig hooks verbosity distPref\n let flags' = flags { regDistPref = toFlag distPref\n , regCabalFilePath = maybeToFlag (cabalFilePath lbi)}\n hookedAction verbosity preUnreg unregHook postUnreg\n (getBuildConfig hooks verbosity distPref)\n hooks flags' args\n\nhookedAction\n :: Verbosity\n -> (UserHooks -> Args -> flags -> IO HookedBuildInfo)\n -> (UserHooks -> PackageDescription -> LocalBuildInfo\n -> UserHooks -> flags -> IO ())\n -> (UserHooks -> Args -> flags -> PackageDescription\n -> LocalBuildInfo -> IO ())\n -> IO LocalBuildInfo\n -> UserHooks -> flags -> Args -> IO ()\nhookedAction verbosity pre_hook cmd_hook =\n hookedActionWithArgs verbosity pre_hook\n (\\h _ pd lbi uh flags ->\n cmd_hook h pd lbi uh flags)\n\nhookedActionWithArgs\n :: Verbosity\n -> (UserHooks -> Args -> flags -> IO HookedBuildInfo)\n -> (UserHooks -> Args -> PackageDescription -> LocalBuildInfo\n -> UserHooks -> flags -> IO ())\n -> (UserHooks -> Args -> flags -> PackageDescription\n -> LocalBuildInfo -> IO ())\n -> IO LocalBuildInfo\n -> UserHooks -> flags -> Args -> IO ()\nhookedActionWithArgs verbosity pre_hook cmd_hook post_hook\n get_build_config hooks flags args = do\n pbi <- pre_hook hooks args flags\n lbi0 <- get_build_config\n let pkg_descr0 = localPkgDescr lbi0\n sanityCheckHookedBuildInfo verbosity pkg_descr0 pbi\n let pkg_descr = updatePackageDescription pbi pkg_descr0\n lbi = lbi0 { localPkgDescr = pkg_descr }\n cmd_hook hooks args pkg_descr lbi hooks flags\n post_hook hooks args flags pkg_descr lbi\n\nsanityCheckHookedBuildInfo\n :: Verbosity -> PackageDescription -> HookedBuildInfo -> IO ()\nsanityCheckHookedBuildInfo verbosity\n (PackageDescription { library = Nothing }) (Just _,_)\n = die' verbosity $ \"The buildinfo contains info for a library, \"\n ++ \"but the package does not have a library.\"\n\nsanityCheckHookedBuildInfo verbosity pkg_descr (_, hookExes)\n | not (null nonExistant)\n = die' verbosity $ \"The buildinfo contains info for an executable called '\"\n ++ prettyShow (head nonExistant) ++ \"' but the package does not have a \"\n ++ \"executable with that name.\"\n where\n pkgExeNames = nub (map exeName (executables pkg_descr))\n hookExeNames = nub (map fst hookExes)\n nonExistant = hookExeNames \\\\ pkgExeNames\n\nsanityCheckHookedBuildInfo _ _ _ = return ()\n\n-- | Try to read the 'localBuildInfoFile'\ntryGetBuildConfig :: UserHooks -> Verbosity -> FilePath\n -> IO (Either ConfigStateFileError LocalBuildInfo)\ntryGetBuildConfig u v = try . getBuildConfig u v\n\n\n-- | Read the 'localBuildInfoFile' or throw an exception.\ngetBuildConfig :: UserHooks -> Verbosity -> FilePath -> IO LocalBuildInfo\ngetBuildConfig hooks verbosity distPref = do\n lbi_wo_programs <- getPersistBuildConfig distPref\n -- Restore info about unconfigured programs, since it is not serialized\n let lbi = lbi_wo_programs {\n withPrograms = restoreProgramDb\n (builtinPrograms ++ hookedPrograms hooks)\n (withPrograms lbi_wo_programs)\n }\n\n case pkgDescrFile lbi of\n Nothing -> return lbi\n Just pkg_descr_file -> do\n outdated <- checkPersistBuildConfigOutdated distPref pkg_descr_file\n if outdated\n then reconfigure pkg_descr_file lbi\n else return lbi\n\n where\n reconfigure :: FilePath -> LocalBuildInfo -> IO LocalBuildInfo\n reconfigure pkg_descr_file lbi = do\n notice verbosity $ pkg_descr_file ++ \" has been changed. \"\n ++ \"Re-configuring with most recently used options. \"\n ++ \"If this fails, please run configure manually.\\n\"\n let cFlags = configFlags lbi\n let cFlags' = cFlags {\n -- Since the list of unconfigured programs is not serialized,\n -- restore it to the same value as normally used at the beginning\n -- of a configure run:\n configPrograms_ = fmap (restoreProgramDb\n (builtinPrograms ++ hookedPrograms hooks))\n `fmap` configPrograms_ cFlags,\n\n -- Use the current, not saved verbosity level:\n configVerbosity = Flag verbosity\n }\n configureAction hooks cFlags' (extraConfigArgs lbi)\n\n\n-- --------------------------------------------------------------------------\n-- Cleaning\n\nclean :: PackageDescription -> CleanFlags -> IO ()\nclean pkg_descr flags = do\n let distPref = fromFlagOrDefault defaultDistPref $ cleanDistPref flags\n notice verbosity \"cleaning...\"\n\n maybeConfig <- if fromFlag (cleanSaveConf flags)\n then maybeGetPersistBuildConfig distPref\n else return Nothing\n\n -- remove the whole dist/ directory rather than tracking exactly what files\n -- we created in there.\n chattyTry \"removing dist/\" $ do\n exists <- doesDirectoryExist distPref\n when exists (removeDirectoryRecursive distPref)\n\n -- Any extra files the user wants to remove\n traverse_ removeFileOrDirectory (extraTmpFiles pkg_descr)\n\n -- If the user wanted to save the config, write it back\n traverse_ (writePersistBuildConfig distPref) maybeConfig\n\n where\n removeFileOrDirectory :: FilePath -> NoCallStackIO ()\n removeFileOrDirectory fname = do\n isDir <- doesDirectoryExist fname\n isFile <- doesFileExist fname\n if isDir then removeDirectoryRecursive fname\n else when isFile $ removeFile fname\n verbosity = fromFlag (cleanVerbosity flags)\n\n-- --------------------------------------------------------------------------\n-- Default hooks\n\n-- | Hooks that correspond to a plain instantiation of the\n-- \\\"simple\\\" build system\nsimpleUserHooks :: UserHooks\nsimpleUserHooks =\n emptyUserHooks {\n confHook = configure,\n postConf = finalChecks,\n buildHook = defaultBuildHook,\n replHook = defaultReplHook,\n copyHook = \\desc lbi _ f -> install desc lbi f,\n -- 'install' has correct 'copy' behavior with params\n testHook = defaultTestHook,\n benchHook = defaultBenchHook,\n instHook = defaultInstallHook,\n cleanHook = \\p _ _ f -> clean p f,\n hscolourHook = \\p l h f -> hscolour p l (allSuffixHandlers h) f,\n haddockHook = \\p l h f -> haddock p l (allSuffixHandlers h) f,\n doctestHook = \\p l h f -> doctest p l (allSuffixHandlers h) f,\n regHook = defaultRegHook,\n unregHook = \\p l _ f -> unregister p l f\n }\n where\n finalChecks _args flags pkg_descr lbi =\n checkForeignDeps pkg_descr lbi (lessVerbose verbosity)\n where\n verbosity = fromFlag (configVerbosity flags)\n\n-- | Basic autoconf 'UserHooks':\n--\n-- * 'postConf' runs @.\\/configure@, if present.\n--\n-- * the pre-hooks 'preBuild', 'preClean', 'preCopy', 'preInst',\n-- 'preReg' and 'preUnreg' read additional build information from\n-- /package/@.buildinfo@, if present.\n--\n-- Thus @configure@ can use local system information to generate\n-- /package/@.buildinfo@ and possibly other files.\n\nautoconfUserHooks :: UserHooks\nautoconfUserHooks\n = simpleUserHooks\n {\n postConf = defaultPostConf,\n preBuild = readHookWithArgs buildVerbosity buildDistPref, -- buildCabalFilePath,\n preCopy = readHookWithArgs copyVerbosity copyDistPref,\n preClean = readHook cleanVerbosity cleanDistPref,\n preInst = readHook installVerbosity installDistPref,\n preHscolour = readHook hscolourVerbosity hscolourDistPref,\n preHaddock = readHookWithArgs haddockVerbosity haddockDistPref,\n preReg = readHook regVerbosity regDistPref,\n preUnreg = readHook regVerbosity regDistPref\n }\n where defaultPostConf :: Args -> ConfigFlags -> PackageDescription\n -> LocalBuildInfo -> IO ()\n defaultPostConf args flags pkg_descr lbi\n = do let verbosity = fromFlag (configVerbosity flags)\n baseDir lbi' = fromMaybe \"\"\n (takeDirectory <$> cabalFilePath lbi')\n confExists <- doesFileExist $ (baseDir lbi) \"configure\"\n if confExists\n then runConfigureScript verbosity\n backwardsCompatHack flags lbi\n else die' verbosity \"configure script not found.\"\n\n pbi <- getHookedBuildInfo verbosity (buildDir lbi)\n sanityCheckHookedBuildInfo verbosity pkg_descr pbi\n let pkg_descr' = updatePackageDescription pbi pkg_descr\n lbi' = lbi { localPkgDescr = pkg_descr' }\n postConf simpleUserHooks args flags pkg_descr' lbi'\n\n backwardsCompatHack = False\n\n readHookWithArgs :: (a -> Flag Verbosity)\n -> (a -> Flag FilePath)\n -> Args -> a\n -> IO HookedBuildInfo\n readHookWithArgs get_verbosity get_dist_pref _ flags = do\n dist_dir <- findDistPrefOrDefault (get_dist_pref flags)\n getHookedBuildInfo verbosity (dist_dir \"build\")\n where\n verbosity = fromFlag (get_verbosity flags)\n\n readHook :: (a -> Flag Verbosity)\n -> (a -> Flag FilePath)\n -> Args -> a -> IO HookedBuildInfo\n readHook get_verbosity get_dist_pref a flags = do\n noExtraFlags a\n dist_dir <- findDistPrefOrDefault (get_dist_pref flags)\n getHookedBuildInfo verbosity (dist_dir \"build\")\n where\n verbosity = fromFlag (get_verbosity flags)\n\nrunConfigureScript :: Verbosity -> Bool -> ConfigFlags -> LocalBuildInfo\n -> IO ()\nrunConfigureScript verbosity backwardsCompatHack flags lbi = do\n env <- getEnvironment\n let programDb = withPrograms lbi\n (ccProg, ccFlags) <- configureCCompiler verbosity programDb\n ccProgShort <- getShortPathName ccProg\n -- The C compiler's compilation and linker flags (e.g.\n -- \"C compiler flags\" and \"Gcc Linker flags\" from GHC) have already\n -- been merged into ccFlags, so we set both CFLAGS and LDFLAGS\n -- to ccFlags\n -- We don't try and tell configure which ld to use, as we don't have\n -- a way to pass its flags too\n configureFile <- makeAbsolute $\n fromMaybe \".\" (takeDirectory <$> cabalFilePath lbi) \"configure\"\n -- autoconf is fussy about filenames, and has a set of forbidden\n -- characters that can't appear in the build directory, etc:\n -- https://www.gnu.org/software/autoconf/manual/autoconf.html#File-System-Conventions\n --\n -- This has caused hard-to-debug failures in the past (#5368), so we\n -- detect some cases early and warn with a clear message. Windows's\n -- use of backslashes is problematic here, so we'll switch to\n -- slashes, but we do still want to fail on backslashes in POSIX\n -- paths.\n --\n -- TODO: We don't check for colons, tildes or leading dashes. We\n -- also should check the builddir's path, destdir, and all other\n -- paths as well.\n let configureFile' = intercalate \"/\" $ splitDirectories configureFile\n for_ badAutoconfCharacters $ \\(c, cname) ->\n when (c `elem` dropDrive configureFile') $\n warn verbosity $\n \"The path to the './configure' script, '\" ++ configureFile'\n ++ \"', contains the character '\" ++ [c] ++ \"' (\" ++ cname ++ \").\"\n ++ \" This may cause the script to fail with an obscure error, or for\"\n ++ \" building the package to fail later.\"\n let extraPath = fromNubList $ configProgramPathExtra flags\n let cflagsEnv = maybe (unwords ccFlags) (++ (\" \" ++ unwords ccFlags))\n $ lookup \"CFLAGS\" env\n spSep = [searchPathSeparator]\n pathEnv = maybe (intercalate spSep extraPath)\n ((intercalate spSep extraPath ++ spSep)++) $ lookup \"PATH\" env\n overEnv = (\"CFLAGS\", Just cflagsEnv) :\n [(\"PATH\", Just pathEnv) | not (null extraPath)]\n hp = hostPlatform lbi\n maybeHostFlag = if hp == buildPlatform then [] else [\"--host=\" ++ show (pretty hp)]\n args' = configureFile':args ++ [\"CC=\" ++ ccProgShort] ++ maybeHostFlag\n shProg = simpleProgram \"sh\"\n progDb = modifyProgramSearchPath\n (\\p -> map ProgramSearchPathDir extraPath ++ p) emptyProgramDb\n shConfiguredProg <- lookupProgram shProg\n `fmap` configureProgram verbosity shProg progDb\n case shConfiguredProg of\n Just sh -> runProgramInvocation verbosity $\n (programInvocation (sh {programOverrideEnv = overEnv}) args')\n { progInvokeCwd = Just (buildDir lbi) }\n Nothing -> die' verbosity notFoundMsg\n\n where\n args = configureArgs backwardsCompatHack flags\n\n badAutoconfCharacters =\n [ (' ', \"space\")\n , ('\\t', \"tab\")\n , ('\\n', \"newline\")\n , ('\\0', \"null\")\n , ('\"', \"double quote\")\n , ('#', \"hash\")\n , ('$', \"dollar sign\")\n , ('&', \"ampersand\")\n , ('\\'', \"single quote\")\n , ('(', \"left bracket\")\n , (')', \"right bracket\")\n , ('*', \"star\")\n , (';', \"semicolon\")\n , ('<', \"less-than sign\")\n , ('=', \"equals sign\")\n , ('>', \"greater-than sign\")\n , ('?', \"question mark\")\n , ('[', \"left square bracket\")\n , ('\\\\', \"backslash\")\n , ('`', \"backtick\")\n , ('|', \"pipe\")\n ]\n\n notFoundMsg = \"The package has a './configure' script. \"\n ++ \"If you are on Windows, This requires a \"\n ++ \"Unix compatibility toolchain such as MinGW+MSYS or Cygwin. \"\n ++ \"If you are not on Windows, ensure that an 'sh' command \"\n ++ \"is discoverable in your path.\"\n\ngetHookedBuildInfo :: Verbosity -> FilePath -> IO HookedBuildInfo\ngetHookedBuildInfo verbosity build_dir = do\n maybe_infoFile <- findHookedPackageDesc verbosity build_dir\n case maybe_infoFile of\n Nothing -> return emptyHookedBuildInfo\n Just infoFile -> do\n info verbosity $ \"Reading parameters from \" ++ infoFile\n readHookedBuildInfo verbosity infoFile\n\ndefaultTestHook :: Args -> PackageDescription -> LocalBuildInfo\n -> UserHooks -> TestFlags -> IO ()\ndefaultTestHook args pkg_descr localbuildinfo _ flags =\n test args pkg_descr localbuildinfo flags\n\ndefaultBenchHook :: Args -> PackageDescription -> LocalBuildInfo\n -> UserHooks -> BenchmarkFlags -> IO ()\ndefaultBenchHook args pkg_descr localbuildinfo _ flags =\n bench args pkg_descr localbuildinfo flags\n\ndefaultInstallHook :: PackageDescription -> LocalBuildInfo\n -> UserHooks -> InstallFlags -> IO ()\ndefaultInstallHook pkg_descr localbuildinfo _ flags = do\n let copyFlags = defaultCopyFlags {\n copyDistPref = installDistPref flags,\n copyDest = installDest flags,\n copyVerbosity = installVerbosity flags\n }\n install pkg_descr localbuildinfo copyFlags\n let registerFlags = defaultRegisterFlags {\n regDistPref = installDistPref flags,\n regInPlace = installInPlace flags,\n regPackageDB = installPackageDB flags,\n regVerbosity = installVerbosity flags\n }\n when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags\n\ndefaultBuildHook :: PackageDescription -> LocalBuildInfo\n -> UserHooks -> BuildFlags -> IO ()\ndefaultBuildHook pkg_descr localbuildinfo hooks flags =\n build pkg_descr localbuildinfo flags (allSuffixHandlers hooks)\n\ndefaultReplHook :: PackageDescription -> LocalBuildInfo\n -> UserHooks -> ReplFlags -> [String] -> IO ()\ndefaultReplHook pkg_descr localbuildinfo hooks flags args =\n repl pkg_descr localbuildinfo flags (allSuffixHandlers hooks) args\n\ndefaultRegHook :: PackageDescription -> LocalBuildInfo\n -> UserHooks -> RegisterFlags -> IO ()\ndefaultRegHook pkg_descr localbuildinfo _ flags =\n if hasLibs pkg_descr\n then register pkg_descr localbuildinfo flags\n else setupMessage (fromFlag (regVerbosity flags))\n \"Package contains no library to register:\" (packageId pkg_descr)\n", "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 0 } }, "method": "textDocument/didOpen" } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Opened text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Consulting the cradle for "Distribution/Simple.hs" Output from setting up the cradle Cradle {cradleRootDir = "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0", cradleOptsProg = CradleAction: Stack} <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "ReqWorkDoneProgressCreate", "contents": { "jsonrpc": "2.0", "params": { "token": "1" }, "method": "window/workDoneProgress/create", "id": 0 } } <-- { "tag": "NotWorkDoneProgressBegin", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "begin", "title": "Processing" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotCustomServer", "contents": { "jsonrpc": "2.0", "params": "Distribution/Simple.hs", "method": "ghcide/cradle/loaded" } } <-- { "tag": "ReqWorkDoneProgressCreate", "contents": { "jsonrpc": "2.0", "params": { "token": 0 }, "method": "window/workDoneProgress/create", "id": 1 } } <-- { "tag": "NotWorkDoneProgressBegin", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "begin", "cancellable": false, "title": "Setting up Cabal-3.0.0 (for Distribution/Simple.hs)" }, "token": 0 }, "method": "$/progress" } } > Getting project config file from STACK_YAML environment <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "1/2" }, "token": "1" }, "method": "$/progress" } } > Cabal> configure (lib) > Configuring Cabal-3.0.0.0... > Cabal> initial-build-steps (lib) > Configuring GHCi with the following packages: Cabal > Getting project config file from STACK_YAML environment > Getting project config file from STACK_YAML environment > /home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/install/x86_64-linux/ea1e0c5c0e175ab5b6d3384a4d5a1967d3678059351c5733b6b7ca519454154b/8.6.5/pkgdb:/home/vsts/work/1/.stack/snapshots/x86_64-linux/ea1e0c5c0e175ab5b6d3384a4d5a1967d3678059351c5733b6b7ca519454154b/8.6.5/pkgdb:/home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d <-- { "tag": "NotWorkDoneProgressEnd", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "end" }, "token": 0 }, "method": "$/progress" } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 1 } }, "method": "textDocument/didChange" } [DEBUG] Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/odir","-hidir=/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/odir","-hide-all-packages","-i/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build","-i/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0","-i/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen","-i/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/global-autogen","-stubdir=/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build","-package-id=array-0.5.3.0","-package-id=base-4.12.0.0","-package-id=bytestring-0.10.8.2","-package-id=containers-0.6.0.1","-package-id=deepseq-1.4.4.0","-package-id=directory-1.3.3.0","-package-id=filepath-1.4.2.1","-package-id=pretty-1.1.3.6","-package-id=process-1.6.5.0","-package-id=time-1.8.0.2","-package-id=transformers-0.5.6.2","-package-id=mtl-2.2.2","-package-id=text-1.2.3.1","-package-id=parsec-3.1.14.0-8t8UKeFouAo5hdmomuIjPj","-package-id=binary-0.8.6.0","-package-id=unix-2.7.2.2","-Wall","-fno-ignore-asserts","-fwarn-tabs","-Wcompat","-Wnoncanonical-monad-instances","-Wnoncanonical-monadfail-instances","-optP-include","-optP/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/ghci/3f1cf901/cabal_macros.h","-ghci-script=/tmp/haskell-stack-ghci/431af313/ghci-script","-package-db","/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/install/x86_64-linux/ea1e0c5c0e175ab5b6d3384a4d5a1967d3678059351c5733b6b7ca519454154b/8.6.5/pkgdb","-package-db","/home/vsts/work/1/.stack/snapshots/x86_64-linux/ea1e0c5c0e175ab5b6d3384a4d5a1967d3678059351c5733b6b7ca519454154b/8.6.5/pkgdb","-package-db","/home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d"], componentRoot = "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0", componentDependencies = ["Cabal.cabal","package.yaml","stack.yaml"]},"/home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/lib/ghc-8.6.5") [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Using interface files cache dir: /home/vsts/.cache/ghcide/main-9c173d74cc940eb3dfc4413783483e901f79b18c [INFO] Making new HscEnv[main] [DEBUG] New Component Cache HscEnvEq: (([],Just HscEnvEq 2),fromList [("/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/hie.yaml",Just 2020-09-26 11:25:42.886323704 UTC),("Cabal.cabal",Just 2020-09-26 11:25:42.22228588 UTC),("package.yaml",Nothing),("stack.yaml",Just 2020-09-26 11:25:42.886323704 UTC)]) [DEBUG] Known files updated: fromList [(TargetModule Distribution.Compat.Exception,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Exception.hs"]),(TargetModule Distribution.PackageDescription.PrettyPrint,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/PrettyPrint.hs"]),(TargetModule Distribution.Types.PkgconfigDependency,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigDependency.hs"]),(TargetModule Distribution.Utils.LogProgress,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/LogProgress.hs"]),(TargetModule Distribution.Simple.PreProcess.Unlit,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PreProcess/Unlit.hs"]),(TargetModule Distribution.Types.SourceRepo.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SourceRepo/Lens.hs"]),(TargetModule Distribution.Types.Benchmark,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Benchmark.hs"]),(TargetModule Distribution.Types.AbiDependency,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AbiDependency.hs"]),(TargetModule Distribution.Compat.Internal.TempFile,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Internal/TempFile.hs"]),(TargetModule Distribution.Version,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Version.hs"]),(TargetModule Distribution.Types.Executable,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Executable.hs"]),(TargetModule Distribution.FieldGrammar.FieldDescrs,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/FieldDescrs.hs"]),(TargetModule Distribution.Utils.NubList,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/NubList.hs"]),(TargetModule Distribution.Simple,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs"]),(TargetModule Distribution.Types.PackageVersionConstraint,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageVersionConstraint.hs"]),(TargetModule Distribution.Types.UnqualComponentName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/UnqualComponentName.hs"]),(TargetModule Distribution.Simple.Register,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Register.hs"]),(TargetModule Distribution.Parsec.Warning,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Warning.hs"]),(TargetModule Distribution.Simple.Doctest,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Doctest.hs"]),(TargetModule Distribution.Compat.Newtype,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Newtype.hs"]),(TargetModule Distribution.Types.ExecutableScope,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExecutableScope.hs"]),(TargetModule Distribution.Simple.GHC.EnvironmentParser,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/EnvironmentParser.hs"]),(TargetModule Distribution.Simple.UHC,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/UHC.hs"]),(TargetModule Distribution.Utils.Progress,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Progress.hs"]),(TargetModule Distribution.Simple.InstallDirs.Internal,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/InstallDirs/Internal.hs"]),(TargetModule Distribution.Types.TestSuite.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuite/Lens.hs"]),(TargetModule Distribution.Fields.Field,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Field.hs"]),(TargetModule Distribution.Types.Condition,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Condition.hs"]),(TargetModule Distribution.Types.ForeignLib.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLib/Lens.hs"]),(TargetModule Distribution.Simple.BuildTarget,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildTarget.hs"]),(TargetModule Distribution.Compat.Environment,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Environment.hs"]),(TargetModule Distribution.Types.ExeDependency,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExeDependency.hs"]),(TargetModule Distribution.Types.PkgconfigVersionRange,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigVersionRange.hs"]),(TargetModule Distribution.Backpack.MixLink,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/MixLink.hs"]),(TargetModule Distribution.Types.GenericPackageDescription.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GenericPackageDescription/Lens.hs"]),(TargetModule Distribution.Simple.Program.Script,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Script.hs"]),(TargetModule Distribution.Types.VersionRange,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionRange.hs"]),(TargetModule Distribution.Types.ComponentName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentName.hs"]),(TargetModule Distribution.Types.TestSuite,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuite.hs"]),(TargetModule Distribution.Simple.Build.Macros,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build/Macros.hs"]),(TargetModule Distribution.Utils.MapAccum,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/MapAccum.hs"]),(TargetModule Distribution.Types.ComponentId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentId.hs"]),(TargetModule Distribution.Make,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Make.hs"]),(TargetModule Distribution.Types.VersionRange.Internal,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionRange/Internal.hs"]),(TargetModule Distribution.SPDX.License,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/License.hs"]),(TargetModule Distribution.Types.ComponentLocalBuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentLocalBuildInfo.hs"]),(TargetModule Distribution.PackageDescription.Configuration,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Configuration.hs"]),(TargetModule Distribution.Simple.Bench,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Bench.hs"]),(TargetModule Distribution.Types.UnitId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/UnitId.hs"]),(TargetModule Distribution.Simple.Program.Internal,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Internal.hs"]),(TargetModule Distribution.Compat.Binary,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Binary.hs"]),(TargetModule Distribution.Parsec.FieldLineStream,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/FieldLineStream.hs"]),(TargetModule Distribution.Simple.Program.ResponseFile,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/ResponseFile.hs"]),(TargetModule Distribution.Simple.Program.Run,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Run.hs"]),(TargetModule Distribution.Simple.GHC.ImplInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/ImplInfo.hs"]),(TargetModule Distribution.Fields.Lexer,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Lexer.hs"]),(TargetModule Distribution.FieldGrammar,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar.hs"]),(TargetModule Distribution.Types.MungedPackageName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/MungedPackageName.hs"]),(TargetModule Distribution.Simple.UserHooks,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/UserHooks.hs"]),(TargetModule Distribution.Types.AnnotatedId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AnnotatedId.hs"]),(TargetModule Distribution.Types.Module,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Module.hs"]),(TargetModule Distribution.Types.VersionInterval,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionInterval.hs"]),(TargetModule Distribution.Types.GivenComponent,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GivenComponent.hs"]),(TargetModule Distribution.Simple.HaskellSuite,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/HaskellSuite.hs"]),(TargetModule Distribution.Utils.Generic,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Generic.hs"]),(TargetModule Distribution.PackageDescription.Utils,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Utils.hs"]),(TargetModule Distribution.Simple.Install,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Install.hs"]),(TargetModule Distribution.ModuleName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/ModuleName.hs"]),(TargetModule Distribution.Types.IncludeRenaming,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/IncludeRenaming.hs"]),(TargetModule Distribution.Types.BenchmarkType,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BenchmarkType.hs"]),(TargetModule Distribution.Fields.Parser,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Parser.hs"]),(TargetModule Distribution.Types.MungedPackageId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/MungedPackageId.hs"]),(TargetModule Language.Haskell.Extension,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Language/Haskell/Extension.hs"]),(TargetModule Distribution.Simple.Program.Strip,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Strip.hs"]),(TargetModule Distribution.Compat.Time,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Time.hs"]),(TargetModule Distribution.Types.PackageName.Magic,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageName/Magic.hs"]),(TargetModule Distribution.Simple.Test.LibV09,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/LibV09.hs"]),(TargetModule Distribution.Simple.Program.GHC,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/GHC.hs"]),(TargetModule Distribution.Simple.Utils.Json,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Utils/Json.hs"]),(TargetModule Distribution.Compat.ResponseFile,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/ResponseFile.hs"]),(TargetModule Distribution.Types.LocalBuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LocalBuildInfo.hs"]),(TargetModule Distribution.Utils.String,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/String.hs"]),(TargetModule Distribution.Simple.Compiler,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Compiler.hs"]),(TargetModule Distribution.Backpack.PreExistingComponent,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/PreExistingComponent.hs"]),(TargetModule Distribution.Backpack.Id,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/Id.hs"]),(TargetModule Distribution.Types.PackageId.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageId/Lens.hs"]),(TargetModule Distribution.Fields,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields.hs"]),(TargetModule Distribution.Compat.GetShortPathName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/GetShortPathName.hs"]),(TargetModule Distribution.Backpack.ReadyComponent,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ReadyComponent.hs"]),(TargetModule Distribution.Types.TestType,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestType.hs"]),(TargetModule Distribution.Compat.Prelude,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Prelude.hs"]),(TargetModule Distribution.Types.CondTree,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/CondTree.hs"]),(TargetModule Distribution.TestSuite,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/TestSuite.hs"]),(TargetModule Distribution.Utils.ShortText,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/ShortText.hs"]),(TargetModule Distribution.GetOpt,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/GetOpt.hs"]),(TargetModule Distribution.Simple.Flag,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Flag.hs"]),(TargetModule Distribution.Backpack.ConfiguredComponent,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ConfiguredComponent.hs"]),(TargetModule Distribution.SPDX,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX.hs"]),(TargetModule Distribution.Simple.Program.Db,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Db.hs"]),(TargetModule Distribution.PackageDescription.Parsec,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Parsec.hs"]),(TargetModule Distribution.Backpack.UnifyM,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/UnifyM.hs"]),(TargetModule Distribution.Simple.Command,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Command.hs"]),(TargetModule Distribution.Backpack.PreModuleShape,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/PreModuleShape.hs"]),(TargetModule Distribution.Verbosity.Internal,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Verbosity/Internal.hs"]),(TargetModule Distribution.Compat.SnocList,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/SnocList.hs"]),(TargetModule Distribution.Types.BuildType,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildType.hs"]),(TargetModule Distribution.Simple.LocalBuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/LocalBuildInfo.hs"]),(TargetModule Distribution.Types.ForeignLib,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLib.hs"]),(TargetModule Distribution.Types.ComponentInclude,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentInclude.hs"]),(TargetModule Distribution.Simple.GHC,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC.hs"]),(TargetModule Distribution.Simple.Program.Ar,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Ar.hs"]),(TargetModule Distribution.Compat.Parsing,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Parsing.hs"]),(TargetModule Distribution.Simple.GHC.Internal,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/Internal.hs"]),(TargetModule Distribution.Verbosity,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Verbosity.hs"]),(TargetModule Distribution.Simple.Setup,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Setup.hs"]),(TargetModule Distribution.Simple.PackageIndex,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PackageIndex.hs"]),(TargetModule Distribution.Compat.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Lens.hs"]),(TargetModule Distribution.Types.PkgconfigName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigName.hs"]),(TargetModule Distribution.Simple.Utils,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Utils.hs"]),(TargetModule Distribution.Types.LibraryVisibility,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LibraryVisibility.hs"]),(TargetModule Distribution.Types.GenericPackageDescription,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GenericPackageDescription.hs"]),(TargetModule Distribution.Simple.InstallDirs,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/InstallDirs.hs"]),(TargetModule Distribution.Simple.Test,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test.hs"]),(TargetModule Distribution.Compat.Prelude.Internal,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Prelude/Internal.hs"]),(TargetModule Distribution.Compiler,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compiler.hs"]),(TargetModule Distribution.Compat.Semigroup,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Semigroup.hs"]),(TargetModule Distribution.Types.Dependency,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Dependency.hs"]),(TargetModule Distribution.ReadE,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/ReadE.hs"]),(TargetModule Distribution.FieldGrammar.Pretty,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Pretty.hs"]),(TargetModule Distribution.Lex,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Lex.hs"]),(TargetModule Distribution.PackageDescription.Check,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Check.hs"]),(TargetModule Distribution.Types.Library.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Library/Lens.hs"]),(TargetModule Distribution.Types.TargetInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TargetInfo.hs"]),(TargetModule Distribution.Types.PackageDescription.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageDescription/Lens.hs"]),(TargetModule Distribution.Parsec.Error,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Error.hs"]),(TargetModule Distribution.Types.SourceRepo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SourceRepo.hs"]),(TargetModule Distribution.FieldGrammar.Parsec,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Parsec.hs"]),(TargetModule Distribution.Compat.Graph,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Graph.hs"]),(TargetModule Distribution.Types.LegacyExeDependency,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LegacyExeDependency.hs"]),(TargetModule Distribution.Backpack.LinkedComponent,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/LinkedComponent.hs"]),(TargetModule Distribution.Simple.CCompiler,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/CCompiler.hs"]),(TargetModule Distribution.Compat.DList,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/DList.hs"]),(TargetModule Distribution.Types.BenchmarkInterface,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BenchmarkInterface.hs"]),(TargetModule Distribution.Types.Mixin,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Mixin.hs"]),(TargetModule Distribution.Types.BuildInfo.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildInfo/Lens.hs"]),(TargetModule Distribution.Backpack.FullUnitId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/FullUnitId.hs"]),(TargetModule Distribution.Compat.CreatePipe,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CreatePipe.hs"]),(TargetModule Distribution.Simple.Hpc,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Hpc.hs"]),(TargetModule Distribution.Types.SetupBuildInfo.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SetupBuildInfo/Lens.hs"]),(TargetModule Distribution.Fields.LexerMonad,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/LexerMonad.hs"]),(TargetModule Distribution.Types.DependencyMap,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/DependencyMap.hs"]),(TargetModule Distribution.Types.Library,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Library.hs"]),(TargetModule Distribution.Compat.Directory,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Directory.hs"]),(TargetModule Distribution.Simple.Program.Types,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Types.hs"]),(TargetModule Distribution.Types.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Lens.hs"]),(TargetModule Distribution.SPDX.LicenseExceptionId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseExceptionId.hs"]),(TargetModule Distribution.Types.ComponentRequestedSpec,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentRequestedSpec.hs"]),(TargetModule Distribution.Compat.MonadFail,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/MonadFail.hs"]),(TargetModule Distribution.Backpack.DescribeUnitId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/DescribeUnitId.hs"]),(TargetModule Distribution.Types.PackageId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageId.hs"]),(TargetModule Distribution.System,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/System.hs"]),(TargetModule Distribution.Types.PackageDescription,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageDescription.hs"]),(TargetModule Distribution.Types.Benchmark.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Benchmark/Lens.hs"]),(TargetModule Distribution.Backpack.Configure,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/Configure.hs"]),(TargetModule Distribution.Simple.Build.PathsModule,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build/PathsModule.hs"]),(TargetModule Distribution.Fields.ConfVar,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/ConfVar.hs"]),(TargetModule Distribution.SPDX.LicenseExpression,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseExpression.hs"]),(TargetModule Distribution.Backpack,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack.hs"]),(TargetModule Distribution.Types.HookedBuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/HookedBuildInfo.hs"]),(TargetModule Distribution.InstalledPackageInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/InstalledPackageInfo.hs"]),(TargetModule Distribution.Types.TestSuiteInterface,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuiteInterface.hs"]),(TargetModule Distribution.Types.BuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildInfo.hs"]),(TargetModule Distribution.Pretty,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Pretty.hs"]),(TargetModule Distribution.Types.ForeignLibType,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLibType.hs"]),(TargetModule Distribution.Compat.CopyFile,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CopyFile.hs"]),(TargetFile NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs"]),(TargetModule Distribution.Simple.Program,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program.hs"]),(TargetModule Distribution.Types.InstalledPackageInfo.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo/Lens.hs"]),(TargetModule Distribution.Fields.Pretty,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Pretty.hs"]),(TargetModule Distribution.Types.Executable.Lens,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Executable/Lens.hs"]),(TargetModule Distribution.SPDX.LicenseId,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseId.hs"]),(TargetModule Distribution.Simple.Test.Log,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/Log.hs"]),(TargetModule Distribution.Types.InstalledPackageInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo.hs"]),(TargetModule Distribution.Simple.Program.Hpc,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Hpc.hs"]),(TargetModule Distribution.Simple.PreProcess,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PreProcess.hs"]),(TargetModule Distribution.Types.Component,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Component.hs"]),(TargetModule Distribution.FieldGrammar.Class,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Class.hs"]),(TargetModule Distribution.Simple.Program.Ld,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Ld.hs"]),(TargetModule Distribution.Package,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Package.hs"]),(TargetModule Distribution.Types.ForeignLibOption,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLibOption.hs"]),(TargetModule Distribution.Utils.IOData,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/IOData.hs"]),(TargetModule Distribution.Backpack.ModuleShape,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModuleShape.hs"]),(TargetModule Distribution.SPDX.LicenseReference,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseReference.hs"]),(TargetModule Distribution.PackageDescription.FieldGrammar,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/FieldGrammar.hs"]),(TargetModule Distribution.Types.LibraryName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LibraryName.hs"]),(TargetModule Distribution.Simple.SrcDist,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/SrcDist.hs"]),(TargetModule Distribution.Types.ModuleRenaming,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ModuleRenaming.hs"]),(TargetModule Distribution.Types.Version,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Version.hs"]),(TargetModule Distribution.Simple.Build,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build.hs"]),(TargetModule Distribution.Compat.Stack,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Stack.hs"]),(TargetModule Distribution.CabalSpecVersion,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/CabalSpecVersion.hs"]),(TargetModule Distribution.Parsec.Newtypes,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Newtypes.hs"]),(TargetModule Distribution.Utils.Base62,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Base62.hs"]),(TargetModule Distribution.Backpack.ModuleScope,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModuleScope.hs"]),(TargetModule Distribution.Simple.BuildToolDepends,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildToolDepends.hs"]),(TargetModule Distribution.Parsec.Position,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Position.hs"]),(TargetModule Distribution.Backpack.ComponentsGraph,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ComponentsGraph.hs"]),(TargetModule Distribution.PackageDescription.Quirks,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Quirks.hs"]),(TargetModule Distribution.Simple.Haddock,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Haddock.hs"]),(TargetModule Distribution.PackageDescription,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription.hs"]),(TargetModule Distribution.Simple.Configure,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Configure.hs"]),(TargetModule Distribution.Simple.Program.Find,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Find.hs"]),(TargetModule Distribution.Simple.Test.ExeV10,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/ExeV10.hs"]),(TargetModule Distribution.Types.PkgconfigVersion,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigVersion.hs"]),(TargetModule Distribution.Types.InstalledPackageInfo.FieldGrammar,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs"]),(TargetModule Distribution.SPDX.LicenseListVersion,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseListVersion.hs"]),(TargetModule Distribution.Types.PackageName,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageName.hs"]),(TargetModule Distribution.Simple.BuildPaths,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildPaths.hs"]),(TargetModule Distribution.Simple.GHCJS,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHCJS.hs"]),(TargetModule Distribution.Simple.Program.Builtin,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Builtin.hs"]),(TargetModule Distribution.Simple.Glob,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Glob.hs"]),(TargetModule Distribution.Simple.Program.HcPkg,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/HcPkg.hs"]),(TargetModule Distribution.Fields.ParseResult,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/ParseResult.hs"]),(TargetModule Distribution.Text,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Text.hs"]),(TargetModule Distribution.Simple.ShowBuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/ShowBuildInfo.hs"]),(TargetModule Distribution.Backpack.ModSubst,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModSubst.hs"]),(TargetModule Distribution.Parsec,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec.hs"]),(TargetModule Distribution.License,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/License.hs"]),(TargetModule Distribution.Compat.CharParsing,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CharParsing.hs"]),(TargetModule Distribution.Utils.UnionFind,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/UnionFind.hs"]),(TargetModule Distribution.Types.ModuleReexport,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ModuleReexport.hs"]),(TargetModule Distribution.Types.SetupBuildInfo,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SetupBuildInfo.hs"]),(TargetModule Distribution.Types.AbiHash,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AbiHash.hs"]),(TargetModule Distribution.Types.ExposedModule,["/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExposedModule.hs"])] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "4/5" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/hie.yaml" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/hie.yaml" } ] }, "method": "client/registerCapability", "id": 2 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "Cabal.cabal" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "Cabal.cabal" } ] }, "method": "client/registerCapability", "id": 3 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "package.yaml" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "package.yaml" } ] }, "method": "client/registerCapability", "id": 4 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "stack.yaml" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "stack.yaml" } ] }, "method": "client/registerCapability", "id": 5 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Parsec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Parsec.hs" } ] }, "method": "client/registerCapability", "id": 6 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Parsec.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Parsec.lhs" } ] }, "method": "client/registerCapability", "id": 7 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Parsec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Parsec.hs" } ] }, "method": "client/registerCapability", "id": 8 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/GetShortPathName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/GetShortPathName.hs" } ] }, "method": "client/registerCapability", "id": 9 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/GetShortPathName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/GetShortPathName.lhs" } ] }, "method": "client/registerCapability", "id": 10 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/GetShortPathName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/GetShortPathName.hs" } ] }, "method": "client/registerCapability", "id": 11 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Environment.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Environment.hs" } ] }, "method": "client/registerCapability", "id": 12 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Environment.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Environment.lhs" } ] }, "method": "client/registerCapability", "id": 13 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Environment.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Environment.hs" } ] }, "method": "client/registerCapability", "id": 14 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Directory.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Directory.hs" } ] }, "method": "client/registerCapability", "id": 15 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Directory.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Directory.lhs" } ] }, "method": "client/registerCapability", "id": 16 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Directory.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Directory.hs" } ] }, "method": "client/registerCapability", "id": 17 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/ResponseFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/ResponseFile.hs" } ] }, "method": "client/registerCapability", "id": 18 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/ResponseFile.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/ResponseFile.lhs" } ] }, "method": "client/registerCapability", "id": 19 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/ResponseFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/ResponseFile.hs" } ] }, "method": "client/registerCapability", "id": 20 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/System.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/System.hs" } ] }, "method": "client/registerCapability", "id": 21 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/System.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/System.lhs" } ] }, "method": "client/registerCapability", "id": 22 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/System.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/System.hs" } ] }, "method": "client/registerCapability", "id": 23 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Pretty.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Pretty.hs" } ] }, "method": "client/registerCapability", "id": 24 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Pretty.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Pretty.lhs" } ] }, "method": "client/registerCapability", "id": 25 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Pretty.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Pretty.hs" } ] }, "method": "client/registerCapability", "id": 26 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/License.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/License.hs" } ] }, "method": "client/registerCapability", "id": 27 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/License.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/License.lhs" } ] }, "method": "client/registerCapability", "id": 28 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/License.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/License.hs" } ] }, "method": "client/registerCapability", "id": 29 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Version.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Version.hs" } ] }, "method": "client/registerCapability", "id": 30 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Version.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Version.lhs" } ] }, "method": "client/registerCapability", "id": 31 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Version.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Version.hs" } ] }, "method": "client/registerCapability", "id": 32 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/Extension.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/Extension.hs" } ] }, "method": "client/registerCapability", "id": 33 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/Extension.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/Extension.lhs" } ] }, "method": "client/registerCapability", "id": 34 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Language/Haskell/Extension.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Language/Haskell/Extension.hs" } ] }, "method": "client/registerCapability", "id": 35 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity.hs" } ] }, "method": "client/registerCapability", "id": 36 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity.lhs" } ] }, "method": "client/registerCapability", "id": 37 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Verbosity.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Verbosity.hs" } ] }, "method": "client/registerCapability", "id": 38 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/NubList.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/NubList.hs" } ] }, "method": "client/registerCapability", "id": 39 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/NubList.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/NubList.lhs" } ] }, "method": "client/registerCapability", "id": 40 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/NubList.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/NubList.hs" } ] }, "method": "client/registerCapability", "id": 41 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils.hs" } ] }, "method": "client/registerCapability", "id": 42 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils.lhs" } ] }, "method": "client/registerCapability", "id": 43 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Utils.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Utils.hs" } ] }, "method": "client/registerCapability", "id": 44 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Doctest.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Doctest.hs" } ] }, "method": "client/registerCapability", "id": 45 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Doctest.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Doctest.lhs" } ] }, "method": "client/registerCapability", "id": 46 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Doctest.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Doctest.hs" } ] }, "method": "client/registerCapability", "id": 47 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Haddock.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Haddock.hs" } ] }, "method": "client/registerCapability", "id": 48 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Haddock.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Haddock.lhs" } ] }, "method": "client/registerCapability", "id": 49 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Haddock.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Haddock.hs" } ] }, "method": "client/registerCapability", "id": 50 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Install.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Install.hs" } ] }, "method": "client/registerCapability", "id": 51 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Install.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Install.lhs" } ] }, "method": "client/registerCapability", "id": 52 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Install.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Install.hs" } ] }, "method": "client/registerCapability", "id": 53 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test.hs" } ] }, "method": "client/registerCapability", "id": 54 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test.lhs" } ] }, "method": "client/registerCapability", "id": 55 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test.hs" } ] }, "method": "client/registerCapability", "id": 56 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildPaths.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildPaths.hs" } ] }, "method": "client/registerCapability", "id": 57 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildPaths.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildPaths.lhs" } ] }, "method": "client/registerCapability", "id": 58 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildPaths.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildPaths.hs" } ] }, "method": "client/registerCapability", "id": 59 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Bench.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Bench.hs" } ] }, "method": "client/registerCapability", "id": 60 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Bench.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Bench.lhs" } ] }, "method": "client/registerCapability", "id": 61 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Bench.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Bench.hs" } ] }, "method": "client/registerCapability", "id": 62 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/LocalBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/LocalBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 63 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/LocalBuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/LocalBuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 64 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/LocalBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/LocalBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 65 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Configure.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Configure.hs" } ] }, "method": "client/registerCapability", "id": 66 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Configure.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Configure.lhs" } ] }, "method": "client/registerCapability", "id": 67 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Configure.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Configure.hs" } ] }, "method": "client/registerCapability", "id": 68 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Register.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Register.hs" } ] }, "method": "client/registerCapability", "id": 69 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Register.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Register.lhs" } ] }, "method": "client/registerCapability", "id": 70 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Register.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Register.hs" } ] }, "method": "client/registerCapability", "id": 71 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/SrcDist.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/SrcDist.hs" } ] }, "method": "client/registerCapability", "id": 72 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/SrcDist.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/SrcDist.lhs" } ] }, "method": "client/registerCapability", "id": 73 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/SrcDist.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/SrcDist.hs" } ] }, "method": "client/registerCapability", "id": 74 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build.hs" } ] }, "method": "client/registerCapability", "id": 75 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build.lhs" } ] }, "method": "client/registerCapability", "id": 76 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build.hs" } ] }, "method": "client/registerCapability", "id": 77 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Command.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Command.hs" } ] }, "method": "client/registerCapability", "id": 78 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Command.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Command.lhs" } ] }, "method": "client/registerCapability", "id": 79 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Command.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Command.hs" } ] }, "method": "client/registerCapability", "id": 80 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Setup.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Setup.hs" } ] }, "method": "client/registerCapability", "id": 81 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Setup.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Setup.lhs" } ] }, "method": "client/registerCapability", "id": 82 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Setup.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Setup.hs" } ] }, "method": "client/registerCapability", "id": 83 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess.hs" } ] }, "method": "client/registerCapability", "id": 84 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess.lhs" } ] }, "method": "client/registerCapability", "id": 85 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PreProcess.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PreProcess.hs" } ] }, "method": "client/registerCapability", "id": 86 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Db.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Db.hs" } ] }, "method": "client/registerCapability", "id": 87 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Db.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Db.lhs" } ] }, "method": "client/registerCapability", "id": 88 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Db.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Db.hs" } ] }, "method": "client/registerCapability", "id": 89 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program.hs" } ] }, "method": "client/registerCapability", "id": 90 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program.lhs" } ] }, "method": "client/registerCapability", "id": 91 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program.hs" } ] }, "method": "client/registerCapability", "id": 92 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Configuration.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Configuration.hs" } ] }, "method": "client/registerCapability", "id": 93 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Configuration.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Configuration.lhs" } ] }, "method": "client/registerCapability", "id": 94 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Configuration.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Configuration.hs" } ] }, "method": "client/registerCapability", "id": 95 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription.hs" } ] }, "method": "client/registerCapability", "id": 96 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription.lhs" } ] }, "method": "client/registerCapability", "id": 97 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription.hs" } ] }, "method": "client/registerCapability", "id": 98 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Package.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Package.hs" } ] }, "method": "client/registerCapability", "id": 99 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Package.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Package.lhs" } ] }, "method": "client/registerCapability", "id": 100 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Package.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Package.hs" } ] }, "method": "client/registerCapability", "id": 101 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UserHooks.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UserHooks.hs" } ] }, "method": "client/registerCapability", "id": 102 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UserHooks.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UserHooks.lhs" } ] }, "method": "client/registerCapability", "id": 103 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/UserHooks.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/UserHooks.hs" } ] }, "method": "client/registerCapability", "id": 104 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Compiler.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Compiler.hs" } ] }, "method": "client/registerCapability", "id": 105 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Compiler.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Compiler.lhs" } ] }, "method": "client/registerCapability", "id": 106 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Compiler.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Compiler.hs" } ] }, "method": "client/registerCapability", "id": 107 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Prelude.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Prelude.hs" } ] }, "method": "client/registerCapability", "id": 108 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Prelude.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Prelude.lhs" } ] }, "method": "client/registerCapability", "id": 109 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Prelude.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Prelude.hs" } ] }, "method": "client/registerCapability", "id": 110 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "229/231" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription/Lens.hs" } ] }, "method": "client/registerCapability", "id": 111 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 112 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageDescription/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageDescription/Lens.hs" } ] }, "method": "client/registerCapability", "id": 113 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription/Lens.hs" } ] }, "method": "client/registerCapability", "id": 114 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 115 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GenericPackageDescription/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GenericPackageDescription/Lens.hs" } ] }, "method": "client/registerCapability", "id": 116 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib/Lens.hs" } ] }, "method": "client/registerCapability", "id": 117 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 118 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLib/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLib/Lens.hs" } ] }, "method": "client/registerCapability", "id": 119 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable/Lens.hs" } ] }, "method": "client/registerCapability", "id": 120 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 121 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "93/237" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec.hs" } ] }, "method": "client/registerCapability", "id": 122 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CharParsing.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CharParsing.hs" } ] }, "method": "client/registerCapability", "id": 123 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CharParsing.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CharParsing.lhs" } ] }, "method": "client/registerCapability", "id": 124 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CharParsing.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CharParsing.hs" } ] }, "method": "client/registerCapability", "id": 125 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/TestSuite.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/TestSuite.hs" } ] }, "method": "client/registerCapability", "id": 126 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/TestSuite.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/TestSuite.lhs" } ] }, "method": "client/registerCapability", "id": 127 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModSubst.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModSubst.hs" } ] }, "method": "client/registerCapability", "id": 128 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModSubst.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModSubst.lhs" } ] }, "method": "client/registerCapability", "id": 129 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/TestSuite.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/TestSuite.hs" } ] }, "method": "client/registerCapability", "id": 130 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/Log.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/Log.hs" } ] }, "method": "client/registerCapability", "id": 131 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/Log.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/Log.lhs" } ] }, "method": "client/registerCapability", "id": 132 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/Log.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/Log.hs" } ] }, "method": "client/registerCapability", "id": 133 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LocalBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LocalBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 134 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LocalBuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LocalBuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 135 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec.lhs" } ] }, "method": "client/registerCapability", "id": 136 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec.hs" } ] }, "method": "client/registerCapability", "id": 137 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/ShortText.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/ShortText.hs" } ] }, "method": "client/registerCapability", "id": 138 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/ShortText.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/ShortText.lhs" } ] }, "method": "client/registerCapability", "id": 139 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/ShortText.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/ShortText.hs" } ] }, "method": "client/registerCapability", "id": 140 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange.hs" } ] }, "method": "client/registerCapability", "id": 141 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange.lhs" } ] }, "method": "client/registerCapability", "id": 142 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionRange.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionRange.hs" } ] }, "method": "client/registerCapability", "id": 143 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Version.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Version.hs" } ] }, "method": "client/registerCapability", "id": 144 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Version.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Version.lhs" } ] }, "method": "client/registerCapability", "id": 145 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Version.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Version.hs" } ] }, "method": "client/registerCapability", "id": 146 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersion.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersion.hs" } ] }, "method": "client/registerCapability", "id": 147 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersion.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersion.lhs" } ] }, "method": "client/registerCapability", "id": 148 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigVersion.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigVersion.hs" } ] }, "method": "client/registerCapability", "id": 149 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "64/237" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnqualComponentName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnqualComponentName.hs" } ] }, "method": "client/registerCapability", "id": 150 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnqualComponentName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnqualComponentName.lhs" } ] }, "method": "client/registerCapability", "id": 151 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/UnqualComponentName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/UnqualComponentName.hs" } ] }, "method": "client/registerCapability", "id": 152 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibOption.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibOption.hs" } ] }, "method": "client/registerCapability", "id": 153 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibOption.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibOption.lhs" } ] }, "method": "client/registerCapability", "id": 154 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLibOption.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLibOption.hs" } ] }, "method": "client/registerCapability", "id": 155 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibType.hs" } ] }, "method": "client/registerCapability", "id": 156 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibType.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibType.lhs" } ] }, "method": "client/registerCapability", "id": 157 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLibType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLibType.hs" } ] }, "method": "client/registerCapability", "id": 158 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentId.hs" } ] }, "method": "client/registerCapability", "id": 159 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Lens.hs" } ] }, "method": "client/registerCapability", "id": 160 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 161 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Lens.hs" } ] }, "method": "client/registerCapability", "id": 162 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX.hs" } ] }, "method": "client/registerCapability", "id": 163 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX.lhs" } ] }, "method": "client/registerCapability", "id": 164 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX.hs" } ] }, "method": "client/registerCapability", "id": 165 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 166 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentId.lhs" } ] }, "method": "client/registerCapability", "id": 167 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentId.hs" } ] }, "method": "client/registerCapability", "id": 168 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Run.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Run.hs" } ] }, "method": "client/registerCapability", "id": 169 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Run.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Run.lhs" } ] }, "method": "client/registerCapability", "id": 170 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Run.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Run.hs" } ] }, "method": "client/registerCapability", "id": 171 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Types.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Types.hs" } ] }, "method": "client/registerCapability", "id": 172 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Types.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Types.lhs" } ] }, "method": "client/registerCapability", "id": 173 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Stack.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Stack.hs" } ] }, "method": "client/registerCapability", "id": 174 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Stack.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Stack.lhs" } ] }, "method": "client/registerCapability", "id": 175 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Stack.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Stack.hs" } ] }, "method": "client/registerCapability", "id": 176 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryName.hs" } ] }, "method": "client/registerCapability", "id": 177 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryName.lhs" } ] }, "method": "client/registerCapability", "id": 178 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "52/238" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 179 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildInfo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildInfo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 180 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/DList.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/DList.hs" } ] }, "method": "client/registerCapability", "id": 181 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/DList.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/DList.lhs" } ] }, "method": "client/registerCapability", "id": 182 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/DList.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/DList.hs" } ] }, "method": "client/registerCapability", "id": 183 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Generic.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Generic.hs" } ] }, "method": "client/registerCapability", "id": 184 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Generic.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Generic.lhs" } ] }, "method": "client/registerCapability", "id": 185 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Generic.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Generic.hs" } ] }, "method": "client/registerCapability", "id": 186 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageName.hs" } ] }, "method": "client/registerCapability", "id": 187 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageName.lhs" } ] }, "method": "client/registerCapability", "id": 188 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/MungedPackageName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/MungedPackageName.hs" } ] }, "method": "client/registerCapability", "id": 189 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageId.hs" } ] }, "method": "client/registerCapability", "id": 190 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageId.lhs" } ] }, "method": "client/registerCapability", "id": 191 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/MungedPackageId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/MungedPackageId.hs" } ] }, "method": "client/registerCapability", "id": 192 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModSubst.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModSubst.hs" } ] }, "method": "client/registerCapability", "id": 193 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack.hs" } ] }, "method": "client/registerCapability", "id": 194 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack.lhs" } ] }, "method": "client/registerCapability", "id": 195 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack.hs" } ] }, "method": "client/registerCapability", "id": 196 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Parser.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Parser.hs" } ] }, "method": "client/registerCapability", "id": 197 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Parser.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Parser.lhs" } ] }, "method": "client/registerCapability", "id": 198 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ModuleName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ModuleName.hs" } ] }, "method": "client/registerCapability", "id": 199 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Types.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Types.hs" } ] }, "method": "client/registerCapability", "id": 200 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Flag.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Flag.hs" } ] }, "method": "client/registerCapability", "id": 201 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/String.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/String.hs" } ] }, "method": "client/registerCapability", "id": 202 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/String.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/String.lhs" } ] }, "method": "client/registerCapability", "id": 203 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/String.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/String.hs" } ] }, "method": "client/registerCapability", "id": 204 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/MapAccum.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/MapAccum.hs" } ] }, "method": "client/registerCapability", "id": 205 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/ResponseFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/ResponseFile.hs" } ] }, "method": "client/registerCapability", "id": 206 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/ResponseFile.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/ResponseFile.lhs" } ] }, "method": "client/registerCapability", "id": 207 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/ResponseFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/ResponseFile.hs" } ] }, "method": "client/registerCapability", "id": 208 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Parsing.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Parsing.hs" } ] }, "method": "client/registerCapability", "id": 209 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Parsing.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Parsing.lhs" } ] }, "method": "client/registerCapability", "id": 210 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Parser.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Parser.hs" } ] }, "method": "client/registerCapability", "id": 211 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CopyFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CopyFile.hs" } ] }, "method": "client/registerCapability", "id": 212 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CopyFile.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CopyFile.lhs" } ] }, "method": "client/registerCapability", "id": 213 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CopyFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CopyFile.hs" } ] }, "method": "client/registerCapability", "id": 214 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LegacyExeDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LegacyExeDependency.hs" } ] }, "method": "client/registerCapability", "id": 215 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LegacyExeDependency.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LegacyExeDependency.lhs" } ] }, "method": "client/registerCapability", "id": 216 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LegacyExeDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LegacyExeDependency.hs" } ] }, "method": "client/registerCapability", "id": 217 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExeDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExeDependency.hs" } ] }, "method": "client/registerCapability", "id": 218 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExeDependency.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExeDependency.lhs" } ] }, "method": "client/registerCapability", "id": 219 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExeDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExeDependency.hs" } ] }, "method": "client/registerCapability", "id": 220 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Semigroup.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Semigroup.hs" } ] }, "method": "client/registerCapability", "id": 221 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Semigroup.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Semigroup.lhs" } ] }, "method": "client/registerCapability", "id": 222 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Semigroup.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Semigroup.hs" } ] }, "method": "client/registerCapability", "id": 223 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "34/239" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compiler.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compiler.hs" } ] }, "method": "client/registerCapability", "id": 224 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compiler.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compiler.lhs" } ] }, "method": "client/registerCapability", "id": 225 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compiler.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compiler.hs" } ] }, "method": "client/registerCapability", "id": 226 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/HookedBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/HookedBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 227 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/HookedBuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/HookedBuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 228 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/HookedBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/HookedBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 229 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo.hs" } ] }, "method": "client/registerCapability", "id": 230 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo.lhs" } ] }, "method": "client/registerCapability", "id": 231 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SourceRepo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SourceRepo.hs" } ] }, "method": "client/registerCapability", "id": 232 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildType.hs" } ] }, "method": "client/registerCapability", "id": 233 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildType.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildType.lhs" } ] }, "method": "client/registerCapability", "id": 234 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersionRange.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersionRange.hs" } ] }, "method": "client/registerCapability", "id": 235 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersionRange.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigVersionRange.lhs" } ] }, "method": "client/registerCapability", "id": 236 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigVersionRange.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigVersionRange.hs" } ] }, "method": "client/registerCapability", "id": 237 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName.hs" } ] }, "method": "client/registerCapability", "id": 238 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ReadE.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ReadE.hs" } ] }, "method": "client/registerCapability", "id": 239 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LocalBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LocalBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 240 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs.hs" } ] }, "method": "client/registerCapability", "id": 241 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs.lhs" } ] }, "method": "client/registerCapability", "id": 242 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/InstallDirs.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/InstallDirs.hs" } ] }, "method": "client/registerCapability", "id": 243 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Hpc.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Hpc.hs" } ] }, "method": "client/registerCapability", "id": 244 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Hpc.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Hpc.lhs" } ] }, "method": "client/registerCapability", "id": 245 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Hpc.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Hpc.hs" } ] }, "method": "client/registerCapability", "id": 246 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/PathsModule.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/PathsModule.hs" } ] }, "method": "client/registerCapability", "id": 247 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/PathsModule.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/PathsModule.lhs" } ] }, "method": "client/registerCapability", "id": 248 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build/PathsModule.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build/PathsModule.hs" } ] }, "method": "client/registerCapability", "id": 249 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CreatePipe.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CreatePipe.hs" } ] }, "method": "client/registerCapability", "id": 250 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CreatePipe.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CreatePipe.lhs" } ] }, "method": "client/registerCapability", "id": 251 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CreatePipe.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/CreatePipe.hs" } ] }, "method": "client/registerCapability", "id": 252 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Flag.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Flag.lhs" } ] }, "method": "client/registerCapability", "id": 253 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Flag.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Flag.hs" } ] }, "method": "client/registerCapability", "id": 254 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Find.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Find.hs" } ] }, "method": "client/registerCapability", "id": 255 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Find.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Find.lhs" } ] }, "method": "client/registerCapability", "id": 256 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Find.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Find.hs" } ] }, "method": "client/registerCapability", "id": 257 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Builtin.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Builtin.hs" } ] }, "method": "client/registerCapability", "id": 258 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Builtin.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Builtin.lhs" } ] }, "method": "client/registerCapability", "id": 259 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Builtin.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Builtin.hs" } ] }, "method": "client/registerCapability", "id": 260 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "29/240" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Parsing.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Parsing.hs" } ] }, "method": "client/registerCapability", "id": 261 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark.hs" } ] }, "method": "client/registerCapability", "id": 262 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark.lhs" } ] }, "method": "client/registerCapability", "id": 263 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Benchmark.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Benchmark.hs" } ] }, "method": "client/registerCapability", "id": 264 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 265 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 266 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 267 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkInterface.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkInterface.hs" } ] }, "method": "client/registerCapability", "id": 268 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ModuleName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ModuleName.lhs" } ] }, "method": "client/registerCapability", "id": 269 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/ModuleName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/ModuleName.hs" } ] }, "method": "client/registerCapability", "id": 270 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuiteInterface.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuiteInterface.hs" } ] }, "method": "client/registerCapability", "id": 271 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/UnionFind.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/UnionFind.hs" } ] }, "method": "client/registerCapability", "id": 272 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/UnionFind.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/UnionFind.lhs" } ] }, "method": "client/registerCapability", "id": 273 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/UnionFind.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/UnionFind.hs" } ] }, "method": "client/registerCapability", "id": 274 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleScope.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleScope.hs" } ] }, "method": "client/registerCapability", "id": 275 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuiteInterface.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuiteInterface.lhs" } ] }, "method": "client/registerCapability", "id": 276 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuiteInterface.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuiteInterface.hs" } ] }, "method": "client/registerCapability", "id": 277 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestType.hs" } ] }, "method": "client/registerCapability", "id": 278 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestType.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestType.lhs" } ] }, "method": "client/registerCapability", "id": 279 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestType.hs" } ] }, "method": "client/registerCapability", "id": 280 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/ImplInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/ImplInfo.hs" } ] }, "method": "client/registerCapability", "id": 281 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Warning.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Warning.hs" } ] }, "method": "client/registerCapability", "id": 282 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/GHC.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/GHC.hs" } ] }, "method": "client/registerCapability", "id": 283 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/GHC.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/GHC.lhs" } ] }, "method": "client/registerCapability", "id": 284 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/GHC.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/GHC.hs" } ] }, "method": "client/registerCapability", "id": 285 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHCJS.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHCJS.hs" } ] }, "method": "client/registerCapability", "id": 286 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHCJS.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHCJS.lhs" } ] }, "method": "client/registerCapability", "id": 287 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Warning.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Warning.lhs" } ] }, "method": "client/registerCapability", "id": 288 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Warning.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Warning.hs" } ] }, "method": "client/registerCapability", "id": 289 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Position.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Position.hs" } ] }, "method": "client/registerCapability", "id": 290 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Position.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Position.lhs" } ] }, "method": "client/registerCapability", "id": 291 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Position.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Position.hs" } ] }, "method": "client/registerCapability", "id": 292 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library.hs" } ] }, "method": "client/registerCapability", "id": 293 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Graph.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Graph.hs" } ] }, "method": "client/registerCapability", "id": 294 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Graph.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Graph.lhs" } ] }, "method": "client/registerCapability", "id": 295 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Graph.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Graph.hs" } ] }, "method": "client/registerCapability", "id": 296 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkInterface.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkInterface.lhs" } ] }, "method": "client/registerCapability", "id": 297 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BenchmarkInterface.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BenchmarkInterface.hs" } ] }, "method": "client/registerCapability", "id": 298 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "29/241" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/InstalledPackageInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/InstalledPackageInfo.hs" } ] }, "method": "client/registerCapability", "id": 299 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryVisibility.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryVisibility.hs" } ] }, "method": "client/registerCapability", "id": 300 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/InstalledPackageInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/InstalledPackageInfo.lhs" } ] }, "method": "client/registerCapability", "id": 301 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/InstalledPackageInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/InstalledPackageInfo.hs" } ] }, "method": "client/registerCapability", "id": 302 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentRequestedSpec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentRequestedSpec.hs" } ] }, "method": "client/registerCapability", "id": 303 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName.lhs" } ] }, "method": "client/registerCapability", "id": 304 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageName.hs" } ] }, "method": "client/registerCapability", "id": 305 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Module.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Module.hs" } ] }, "method": "client/registerCapability", "id": 306 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Module.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Module.lhs" } ] }, "method": "client/registerCapability", "id": 307 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Module.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Module.hs" } ] }, "method": "client/registerCapability", "id": 308 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GivenComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GivenComponent.hs" } ] }, "method": "client/registerCapability", "id": 309 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GivenComponent.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GivenComponent.lhs" } ] }, "method": "client/registerCapability", "id": 310 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GivenComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GivenComponent.hs" } ] }, "method": "client/registerCapability", "id": 311 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription.hs" } ] }, "method": "client/registerCapability", "id": 312 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/LexerMonad.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/LexerMonad.hs" } ] }, "method": "client/registerCapability", "id": 313 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/LexerMonad.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/LexerMonad.lhs" } ] }, "method": "client/registerCapability", "id": 314 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/LexerMonad.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/LexerMonad.hs" } ] }, "method": "client/registerCapability", "id": 315 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/ImplInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/ImplInfo.lhs" } ] }, "method": "client/registerCapability", "id": 316 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/FieldLineStream.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/FieldLineStream.hs" } ] }, "method": "client/registerCapability", "id": 317 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/FieldLineStream.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/FieldLineStream.lhs" } ] }, "method": "client/registerCapability", "id": 318 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/FieldLineStream.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/FieldLineStream.hs" } ] }, "method": "client/registerCapability", "id": 319 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ParseResult.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ParseResult.hs" } ] }, "method": "client/registerCapability", "id": 320 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ParseResult.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ParseResult.lhs" } ] }, "method": "client/registerCapability", "id": 321 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/ParseResult.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/ParseResult.hs" } ] }, "method": "client/registerCapability", "id": 322 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AnnotatedId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AnnotatedId.hs" } ] }, "method": "client/registerCapability", "id": 323 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AnnotatedId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AnnotatedId.lhs" } ] }, "method": "client/registerCapability", "id": 324 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AnnotatedId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AnnotatedId.hs" } ] }, "method": "client/registerCapability", "id": 325 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigName.hs" } ] }, "method": "client/registerCapability", "id": 326 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigName.lhs" } ] }, "method": "client/registerCapability", "id": 327 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigName.hs" } ] }, "method": "client/registerCapability", "id": 328 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 329 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 330 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SetupBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SetupBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 331 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "26/242" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Dependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Dependency.hs" } ] }, "method": "client/registerCapability", "id": 332 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Dependency.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Dependency.lhs" } ] }, "method": "client/registerCapability", "id": 333 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription.lhs" } ] }, "method": "client/registerCapability", "id": 334 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GenericPackageDescription.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/GenericPackageDescription.hs" } ] }, "method": "client/registerCapability", "id": 335 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Condition.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Condition.hs" } ] }, "method": "client/registerCapability", "id": 336 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Condition.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Condition.lhs" } ] }, "method": "client/registerCapability", "id": 337 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Condition.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Condition.hs" } ] }, "method": "client/registerCapability", "id": 338 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PackageIndex.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PackageIndex.hs" } ] }, "method": "client/registerCapability", "id": 339 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PackageIndex.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PackageIndex.lhs" } ] }, "method": "client/registerCapability", "id": 340 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigDependency.hs" } ] }, "method": "client/registerCapability", "id": 341 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigDependency.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigDependency.lhs" } ] }, "method": "client/registerCapability", "id": 342 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PkgconfigDependency.hs" } ] }, "method": "client/registerCapability", "id": 343 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseListVersion.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseListVersion.hs" } ] }, "method": "client/registerCapability", "id": 344 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseListVersion.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseListVersion.lhs" } ] }, "method": "client/registerCapability", "id": 345 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseListVersion.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseListVersion.hs" } ] }, "method": "client/registerCapability", "id": 346 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseReference.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseReference.hs" } ] }, "method": "client/registerCapability", "id": 347 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseReference.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseReference.lhs" } ] }, "method": "client/registerCapability", "id": 348 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseReference.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseReference.hs" } ] }, "method": "client/registerCapability", "id": 349 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExpression.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExpression.hs" } ] }, "method": "client/registerCapability", "id": 350 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExpression.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExpression.lhs" } ] }, "method": "client/registerCapability", "id": 351 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseId.hs" } ] }, "method": "client/registerCapability", "id": 352 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseId.lhs" } ] }, "method": "client/registerCapability", "id": 353 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseId.hs" } ] }, "method": "client/registerCapability", "id": 354 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExceptionId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExceptionId.hs" } ] }, "method": "client/registerCapability", "id": 355 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExceptionId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExceptionId.lhs" } ] }, "method": "client/registerCapability", "id": 356 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseExceptionId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseExceptionId.hs" } ] }, "method": "client/registerCapability", "id": 357 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Exception.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Exception.hs" } ] }, "method": "client/registerCapability", "id": 358 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Exception.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Exception.lhs" } ] }, "method": "client/registerCapability", "id": 359 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Exception.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Exception.hs" } ] }, "method": "client/registerCapability", "id": 360 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite.hs" } ] }, "method": "client/registerCapability", "id": 361 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite.lhs" } ] }, "method": "client/registerCapability", "id": 362 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuite.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuite.hs" } ] }, "method": "client/registerCapability", "id": 363 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleRenaming.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleRenaming.hs" } ] }, "method": "client/registerCapability", "id": 364 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleRenaming.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleRenaming.lhs" } ] }, "method": "client/registerCapability", "id": 365 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ModuleRenaming.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ModuleRenaming.hs" } ] }, "method": "client/registerCapability", "id": 366 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite/Lens.hs" } ] }, "method": "client/registerCapability", "id": 367 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 368 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuite/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TestSuite/Lens.hs" } ] }, "method": "client/registerCapability", "id": 369 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 370 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 371 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SourceRepo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SourceRepo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 372 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 373 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 374 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SetupBuildInfo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/SetupBuildInfo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 375 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId/Lens.hs" } ] }, "method": "client/registerCapability", "id": 376 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 377 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageId/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageId/Lens.hs" } ] }, "method": "client/registerCapability", "id": 378 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionInterval.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionInterval.hs" } ] }, "method": "client/registerCapability", "id": 379 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionInterval.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionInterval.lhs" } ] }, "method": "client/registerCapability", "id": 380 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionInterval.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionInterval.hs" } ] }, "method": "client/registerCapability", "id": 381 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "26/243" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/HaskellSuite.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/HaskellSuite.hs" } ] }, "method": "client/registerCapability", "id": 382 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/HaskellSuite.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/HaskellSuite.lhs" } ] }, "method": "client/registerCapability", "id": 383 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/HaskellSuite.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/HaskellSuite.hs" } ] }, "method": "client/registerCapability", "id": 384 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UHC.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UHC.hs" } ] }, "method": "client/registerCapability", "id": 385 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UHC.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UHC.lhs" } ] }, "method": "client/registerCapability", "id": 386 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/UHC.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/UHC.hs" } ] }, "method": "client/registerCapability", "id": 387 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs" } ] }, "method": "client/registerCapability", "id": 388 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/FieldGrammar.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/FieldGrammar.lhs" } ] }, "method": "client/registerCapability", "id": 389 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs" } ] }, "method": "client/registerCapability", "id": 390 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo.hs" } ] }, "method": "client/registerCapability", "id": 391 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo.lhs" } ] }, "method": "client/registerCapability", "id": 392 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo.hs" } ] }, "method": "client/registerCapability", "id": 393 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields.hs" } ] }, "method": "client/registerCapability", "id": 394 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields.lhs" } ] }, "method": "client/registerCapability", "id": 395 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/IncludeRenaming.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/IncludeRenaming.hs" } ] }, "method": "client/registerCapability", "id": 396 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/IncludeRenaming.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/IncludeRenaming.lhs" } ] }, "method": "client/registerCapability", "id": 397 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/IncludeRenaming.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/IncludeRenaming.hs" } ] }, "method": "client/registerCapability", "id": 398 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PackageIndex.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PackageIndex.hs" } ] }, "method": "client/registerCapability", "id": 399 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TargetInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TargetInfo.hs" } ] }, "method": "client/registerCapability", "id": 400 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TargetInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TargetInfo.lhs" } ] }, "method": "client/registerCapability", "id": 401 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TargetInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/TargetInfo.hs" } ] }, "method": "client/registerCapability", "id": 402 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/HcPkg.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/HcPkg.hs" } ] }, "method": "client/registerCapability", "id": 403 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/HcPkg.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/HcPkg.lhs" } ] }, "method": "client/registerCapability", "id": 404 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/HcPkg.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/HcPkg.hs" } ] }, "method": "client/registerCapability", "id": 405 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Field.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Field.hs" } ] }, "method": "client/registerCapability", "id": 406 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Field.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Field.lhs" } ] }, "method": "client/registerCapability", "id": 407 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Field.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Field.hs" } ] }, "method": "client/registerCapability", "id": 408 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Pretty.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Pretty.hs" } ] }, "method": "client/registerCapability", "id": 409 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Newtype.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Newtype.hs" } ] }, "method": "client/registerCapability", "id": 410 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Class.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Class.hs" } ] }, "method": "client/registerCapability", "id": 411 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Class.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Class.lhs" } ] }, "method": "client/registerCapability", "id": 412 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Class.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Class.hs" } ] }, "method": "client/registerCapability", "id": 413 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Binary.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Binary.hs" } ] }, "method": "client/registerCapability", "id": 414 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Binary.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Binary.lhs" } ] }, "method": "client/registerCapability", "id": 415 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Binary.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Binary.hs" } ] }, "method": "client/registerCapability", "id": 416 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity/Internal.hs" } ] }, "method": "client/registerCapability", "id": 417 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity/Internal.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity/Internal.lhs" } ] }, "method": "client/registerCapability", "id": 418 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Verbosity/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Verbosity/Internal.hs" } ] }, "method": "client/registerCapability", "id": 419 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentName.hs" } ] }, "method": "client/registerCapability", "id": 420 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentName.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentName.lhs" } ] }, "method": "client/registerCapability", "id": 421 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentName.hs" } ] }, "method": "client/registerCapability", "id": 422 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Component.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Component.hs" } ] }, "method": "client/registerCapability", "id": 423 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Component.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Component.lhs" } ] }, "method": "client/registerCapability", "id": 424 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable.hs" } ] }, "method": "client/registerCapability", "id": 425 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable.lhs" } ] }, "method": "client/registerCapability", "id": 426 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Executable.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Executable.hs" } ] }, "method": "client/registerCapability", "id": 427 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExecutableScope.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExecutableScope.hs" } ] }, "method": "client/registerCapability", "id": 428 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "21/243" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Base62.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Base62.hs" } ] }, "method": "client/registerCapability", "id": 429 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Base62.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Base62.lhs" } ] }, "method": "client/registerCapability", "id": 430 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Newtype.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Newtype.lhs" } ] }, "method": "client/registerCapability", "id": 431 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/LogProgress.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/LogProgress.hs" } ] }, "method": "client/registerCapability", "id": 432 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/LogProgress.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/LogProgress.lhs" } ] }, "method": "client/registerCapability", "id": 433 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/LogProgress.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/LogProgress.hs" } ] }, "method": "client/registerCapability", "id": 434 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Error.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Error.hs" } ] }, "method": "client/registerCapability", "id": 435 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Error.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Error.lhs" } ] }, "method": "client/registerCapability", "id": 436 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Error.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Error.hs" } ] }, "method": "client/registerCapability", "id": 437 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Pretty.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Pretty.hs" } ] }, "method": "client/registerCapability", "id": 438 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Pretty.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Pretty.lhs" } ] }, "method": "client/registerCapability", "id": 439 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Pretty.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Pretty.hs" } ] }, "method": "client/registerCapability", "id": 440 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library.lhs" } ] }, "method": "client/registerCapability", "id": 441 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Library.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Library.hs" } ] }, "method": "client/registerCapability", "id": 442 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleReexport.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleReexport.hs" } ] }, "method": "client/registerCapability", "id": 443 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleReexport.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleReexport.lhs" } ] }, "method": "client/registerCapability", "id": 444 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ModuleReexport.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ModuleReexport.hs" } ] }, "method": "client/registerCapability", "id": 445 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Newtype.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Newtype.hs" } ] }, "method": "client/registerCapability", "id": 446 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/CabalSpecVersion.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/CabalSpecVersion.hs" } ] }, "method": "client/registerCapability", "id": 447 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/CabalSpecVersion.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/CabalSpecVersion.lhs" } ] }, "method": "client/registerCapability", "id": 448 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/CabalSpecVersion.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/CabalSpecVersion.hs" } ] }, "method": "client/registerCapability", "id": 449 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentLocalBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentLocalBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 450 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentLocalBuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentLocalBuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 451 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields.hs" } ] }, "method": "client/registerCapability", "id": 452 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/FieldDescrs.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/FieldDescrs.hs" } ] }, "method": "client/registerCapability", "id": 453 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/FieldDescrs.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/FieldDescrs.lhs" } ] }, "method": "client/registerCapability", "id": 454 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LibraryName.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LibraryName.hs" } ] }, "method": "client/registerCapability", "id": 455 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/CondTree.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/CondTree.hs" } ] }, "method": "client/registerCapability", "id": 456 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/CondTree.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/CondTree.lhs" } ] }, "method": "client/registerCapability", "id": 457 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/CondTree.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/CondTree.hs" } ] }, "method": "client/registerCapability", "id": 458 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription.hs" } ] }, "method": "client/registerCapability", "id": 459 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription.lhs" } ] }, "method": "client/registerCapability", "id": 460 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageDescription.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageDescription.hs" } ] }, "method": "client/registerCapability", "id": 461 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnitId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnitId.hs" } ] }, "method": "client/registerCapability", "id": 462 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnitId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnitId.lhs" } ] }, "method": "client/registerCapability", "id": 463 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/UnitId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/UnitId.hs" } ] }, "method": "client/registerCapability", "id": 464 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/Internal.hs" } ] }, "method": "client/registerCapability", "id": 465 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/Internal.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/Internal.lhs" } ] }, "method": "client/registerCapability", "id": 466 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/Internal.hs" } ] }, "method": "client/registerCapability", "id": 467 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Lex.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Lex.hs" } ] }, "method": "client/registerCapability", "id": 468 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Lex.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Lex.lhs" } ] }, "method": "client/registerCapability", "id": 469 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Lex.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Lex.hs" } ] }, "method": "client/registerCapability", "id": 470 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "20/243" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Internal/TempFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Internal/TempFile.hs" } ] }, "method": "client/registerCapability", "id": 471 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Internal/TempFile.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Internal/TempFile.lhs" } ] }, "method": "client/registerCapability", "id": 472 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Internal/TempFile.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Internal/TempFile.hs" } ] }, "method": "client/registerCapability", "id": 473 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Lens.hs" } ] }, "method": "client/registerCapability", "id": 474 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 475 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/Lens.hs" } ] }, "method": "client/registerCapability", "id": 476 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ReadE.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ReadE.lhs" } ] }, "method": "client/registerCapability", "id": 477 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/ReadE.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/ReadE.hs" } ] }, "method": "client/registerCapability", "id": 478 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/GetOpt.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/GetOpt.hs" } ] }, "method": "client/registerCapability", "id": 479 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/GetOpt.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/GetOpt.lhs" } ] }, "method": "client/registerCapability", "id": 480 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/GetOpt.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/GetOpt.hs" } ] }, "method": "client/registerCapability", "id": 481 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Progress.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Progress.hs" } ] }, "method": "client/registerCapability", "id": 482 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Progress.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Progress.lhs" } ] }, "method": "client/registerCapability", "id": 483 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Progress.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Progress.hs" } ] }, "method": "client/registerCapability", "id": 484 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/FieldDescrs.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/FieldDescrs.hs" } ] }, "method": "client/registerCapability", "id": 485 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar.hs" } ] }, "method": "client/registerCapability", "id": 486 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar.lhs" } ] }, "method": "client/registerCapability", "id": 487 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar.hs" } ] }, "method": "client/registerCapability", "id": 488 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/MapAccum.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/MapAccum.lhs" } ] }, "method": "client/registerCapability", "id": 489 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/MapAccum.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/MapAccum.hs" } ] }, "method": "client/registerCapability", "id": 490 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildToolDepends.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildToolDepends.hs" } ] }, "method": "client/registerCapability", "id": 491 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildToolDepends.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildToolDepends.lhs" } ] }, "method": "client/registerCapability", "id": 492 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildToolDepends.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildToolDepends.hs" } ] }, "method": "client/registerCapability", "id": 493 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentInclude.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentInclude.hs" } ] }, "method": "client/registerCapability", "id": 494 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentInclude.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentInclude.lhs" } ] }, "method": "client/registerCapability", "id": 495 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentInclude.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentInclude.hs" } ] }, "method": "client/registerCapability", "id": 496 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Mixin.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Mixin.hs" } ] }, "method": "client/registerCapability", "id": 497 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Mixin.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Mixin.lhs" } ] }, "method": "client/registerCapability", "id": 498 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Mixin.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Mixin.hs" } ] }, "method": "client/registerCapability", "id": 499 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Base62.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/Base62.hs" } ] }, "method": "client/registerCapability", "id": 500 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/MonadFail.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/MonadFail.hs" } ] }, "method": "client/registerCapability", "id": 501 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/MonadFail.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/MonadFail.lhs" } ] }, "method": "client/registerCapability", "id": 502 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/MonadFail.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Compat/MonadFail.hs" } ] }, "method": "client/registerCapability", "id": 503 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Lexer.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Lexer.hs" } ] }, "method": "client/registerCapability", "id": 504 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Lexer.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/Lexer.lhs" } ] }, "method": "client/registerCapability", "id": 505 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Lexer.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Lexer.hs" } ] }, "method": "client/registerCapability", "id": 506 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Pretty.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Pretty.lhs" } ] }, "method": "client/registerCapability", "id": 507 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Pretty.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Pretty.hs" } ] }, "method": "client/registerCapability", "id": 508 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Parsec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Parsec.hs" } ] }, "method": "client/registerCapability", "id": 509 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Parsec.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Parsec.lhs" } ] }, "method": "client/registerCapability", "id": 510 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Parsec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/FieldGrammar/Parsec.hs" } ] }, "method": "client/registerCapability", "id": 511 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "19/243" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Component.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Component.hs" } ] }, "method": "client/registerCapability", "id": 512 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Internal.hs" } ] }, "method": "client/registerCapability", "id": 513 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Internal.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Internal.lhs" } ] }, "method": "client/registerCapability", "id": 514 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Internal.hs" } ] }, "method": "client/registerCapability", "id": 515 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 516 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 517 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId.hs" } ] }, "method": "client/registerCapability", "id": 518 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId.lhs" } ] }, "method": "client/registerCapability", "id": 519 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageId.hs" } ] }, "method": "client/registerCapability", "id": 520 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/IOData.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/IOData.hs" } ] }, "method": "client/registerCapability", "id": 521 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/IOData.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/IOData.lhs" } ] }, "method": "client/registerCapability", "id": 522 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/MixLink.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/MixLink.hs" } ] }, "method": "client/registerCapability", "id": 523 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/IOData.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Utils/IOData.hs" } ] }, "method": "client/registerCapability", "id": 524 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleShape.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleShape.hs" } ] }, "method": "client/registerCapability", "id": 525 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleShape.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleShape.lhs" } ] }, "method": "client/registerCapability", "id": 526 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModuleShape.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModuleShape.hs" } ] }, "method": "client/registerCapability", "id": 527 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/MixLink.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/MixLink.lhs" } ] }, "method": "client/registerCapability", "id": 528 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/MixLink.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/MixLink.hs" } ] }, "method": "client/registerCapability", "id": 529 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/UnifyM.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/UnifyM.hs" } ] }, "method": "client/registerCapability", "id": 530 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/UnifyM.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/UnifyM.lhs" } ] }, "method": "client/registerCapability", "id": 531 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExecutableScope.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExecutableScope.lhs" } ] }, "method": "client/registerCapability", "id": 532 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExecutableScope.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExecutableScope.hs" } ] }, "method": "client/registerCapability", "id": 533 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs/Internal.hs" } ] }, "method": "client/registerCapability", "id": 534 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs/Internal.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs/Internal.lhs" } ] }, "method": "client/registerCapability", "id": 535 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/InstallDirs/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/InstallDirs/Internal.hs" } ] }, "method": "client/registerCapability", "id": 536 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentLocalBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentLocalBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 537 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "17/243" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/FieldGrammar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/FieldGrammar.hs" } ] }, "method": "client/registerCapability", "id": 538 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/FieldGrammar.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/FieldGrammar.lhs" } ] }, "method": "client/registerCapability", "id": 539 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/FieldGrammar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/FieldGrammar.hs" } ] }, "method": "client/registerCapability", "id": 540 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/LibV09.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/LibV09.hs" } ] }, "method": "client/registerCapability", "id": 541 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/LibV09.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/LibV09.lhs" } ] }, "method": "client/registerCapability", "id": 542 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/LibV09.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/LibV09.hs" } ] }, "method": "client/registerCapability", "id": 543 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/ExeV10.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/ExeV10.hs" } ] }, "method": "client/registerCapability", "id": 544 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/ExeV10.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/ExeV10.lhs" } ] }, "method": "client/registerCapability", "id": 545 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/ExeV10.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Test/ExeV10.hs" } ] }, "method": "client/registerCapability", "id": 546 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Hpc.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Hpc.hs" } ] }, "method": "client/registerCapability", "id": 547 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Hpc.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Hpc.lhs" } ] }, "method": "client/registerCapability", "id": 548 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Hpc.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Hpc.hs" } ] }, "method": "client/registerCapability", "id": 549 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHCJS.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHCJS.hs" } ] }, "method": "client/registerCapability", "id": 550 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC.hs" } ] }, "method": "client/registerCapability", "id": 551 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC.lhs" } ] }, "method": "client/registerCapability", "id": 552 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/UnifyM.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/UnifyM.hs" } ] }, "method": "client/registerCapability", "id": 553 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/ImplInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/ImplInfo.hs" } ] }, "method": "client/registerCapability", "id": 554 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Dependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Dependency.hs" } ] }, "method": "client/registerCapability", "id": 555 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiHash.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiHash.hs" } ] }, "method": "client/registerCapability", "id": 556 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiHash.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiHash.lhs" } ] }, "method": "client/registerCapability", "id": 557 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AbiHash.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AbiHash.hs" } ] }, "method": "client/registerCapability", "id": 558 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Id.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Id.hs" } ] }, "method": "client/registerCapability", "id": 559 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Id.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Id.lhs" } ] }, "method": "client/registerCapability", "id": 560 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/Id.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/Id.hs" } ] }, "method": "client/registerCapability", "id": 561 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/InstalledPackageInfo/Lens.hs" } ] }, "method": "client/registerCapability", "id": 562 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkType.hs" } ] }, "method": "client/registerCapability", "id": 563 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkType.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkType.lhs" } ] }, "method": "client/registerCapability", "id": 564 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BenchmarkType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BenchmarkType.hs" } ] }, "method": "client/registerCapability", "id": 565 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildType.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/BuildType.hs" } ] }, "method": "client/registerCapability", "id": 566 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/DependencyMap.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/DependencyMap.hs" } ] }, "method": "client/registerCapability", "id": 567 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/DependencyMap.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/DependencyMap.lhs" } ] }, "method": "client/registerCapability", "id": 568 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/DependencyMap.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/DependencyMap.hs" } ] }, "method": "client/registerCapability", "id": 569 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildTarget.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildTarget.hs" } ] }, "method": "client/registerCapability", "id": 570 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildTarget.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildTarget.lhs" } ] }, "method": "client/registerCapability", "id": 571 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildTarget.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/BuildTarget.hs" } ] }, "method": "client/registerCapability", "id": 572 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "14/244" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Glob.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Glob.hs" } ] }, "method": "client/registerCapability", "id": 573 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Glob.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Glob.lhs" } ] }, "method": "client/registerCapability", "id": 574 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Glob.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Glob.hs" } ] }, "method": "client/registerCapability", "id": 575 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExposedModule.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExposedModule.hs" } ] }, "method": "client/registerCapability", "id": 576 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExposedModule.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExposedModule.lhs" } ] }, "method": "client/registerCapability", "id": 577 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExposedModule.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ExposedModule.hs" } ] }, "method": "client/registerCapability", "id": 578 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange/Internal.hs" } ] }, "method": "client/registerCapability", "id": 579 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange/Internal.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange/Internal.lhs" } ] }, "method": "client/registerCapability", "id": 580 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionRange/Internal.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/VersionRange/Internal.hs" } ] }, "method": "client/registerCapability", "id": 581 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Script.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Script.hs" } ] }, "method": "client/registerCapability", "id": 582 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Script.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Script.lhs" } ] }, "method": "client/registerCapability", "id": 583 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Script.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Script.hs" } ] }, "method": "client/registerCapability", "id": 584 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/DescribeUnitId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/DescribeUnitId.hs" } ] }, "method": "client/registerCapability", "id": 585 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/DescribeUnitId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/DescribeUnitId.lhs" } ] }, "method": "client/registerCapability", "id": 586 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/DescribeUnitId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/DescribeUnitId.hs" } ] }, "method": "client/registerCapability", "id": 587 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library/Lens.hs" } ] }, "method": "client/registerCapability", "id": 588 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 589 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Library/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Library/Lens.hs" } ] }, "method": "client/registerCapability", "id": 590 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName/Magic.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName/Magic.hs" } ] }, "method": "client/registerCapability", "id": 591 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName/Magic.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName/Magic.lhs" } ] }, "method": "client/registerCapability", "id": 592 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageName/Magic.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/PackageName/Magic.hs" } ] }, "method": "client/registerCapability", "id": 593 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/LinkedComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/LinkedComponent.hs" } ] }, "method": "client/registerCapability", "id": 594 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/LinkedComponent.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/LinkedComponent.lhs" } ] }, "method": "client/registerCapability", "id": 595 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/LinkedComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/LinkedComponent.hs" } ] }, "method": "client/registerCapability", "id": 596 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "15/246" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentRequestedSpec.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentRequestedSpec.lhs" } ] }, "method": "client/registerCapability", "id": 597 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentRequestedSpec.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ComponentRequestedSpec.hs" } ] }, "method": "client/registerCapability", "id": 598 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/CCompiler.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/CCompiler.hs" } ] }, "method": "client/registerCapability", "id": 599 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/CCompiler.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/CCompiler.lhs" } ] }, "method": "client/registerCapability", "id": 600 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/CCompiler.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/CCompiler.hs" } ] }, "method": "client/registerCapability", "id": 601 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC.hs" } ] }, "method": "client/registerCapability", "id": 602 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ConfiguredComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ConfiguredComponent.hs" } ] }, "method": "client/registerCapability", "id": 603 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ConfiguredComponent.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ConfiguredComponent.lhs" } ] }, "method": "client/registerCapability", "id": 604 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ConfiguredComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ConfiguredComponent.hs" } ] }, "method": "client/registerCapability", "id": 605 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreExistingComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreExistingComponent.hs" } ] }, "method": "client/registerCapability", "id": 606 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreExistingComponent.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreExistingComponent.lhs" } ] }, "method": "client/registerCapability", "id": 607 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/PreExistingComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/PreExistingComponent.hs" } ] }, "method": "client/registerCapability", "id": 608 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Configure.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Configure.hs" } ] }, "method": "client/registerCapability", "id": 609 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Configure.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Configure.lhs" } ] }, "method": "client/registerCapability", "id": 610 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/Configure.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/Configure.hs" } ] }, "method": "client/registerCapability", "id": 611 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseExpression.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/LicenseExpression.hs" } ] }, "method": "client/registerCapability", "id": 612 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/License.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/License.hs" } ] }, "method": "client/registerCapability", "id": 613 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/License.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/License.lhs" } ] }, "method": "client/registerCapability", "id": 614 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/License.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/SPDX/License.hs" } ] }, "method": "client/registerCapability", "id": 615 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib.hs" } ] }, "method": "client/registerCapability", "id": 616 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib.lhs" } ] }, "method": "client/registerCapability", "id": 617 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLib.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/ForeignLib.hs" } ] }, "method": "client/registerCapability", "id": 618 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess/Unlit.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess/Unlit.hs" } ] }, "method": "client/registerCapability", "id": 619 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Utils.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Utils.hs" } ] }, "method": "client/registerCapability", "id": 620 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Check.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Check.hs" } ] }, "method": "client/registerCapability", "id": 621 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Check.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Check.lhs" } ] }, "method": "client/registerCapability", "id": 622 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess/Unlit.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess/Unlit.lhs" } ] }, "method": "client/registerCapability", "id": 623 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Check.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Check.hs" } ] }, "method": "client/registerCapability", "id": 624 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Strip.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Strip.hs" } ] }, "method": "client/registerCapability", "id": 625 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Strip.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Strip.lhs" } ] }, "method": "client/registerCapability", "id": 626 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Strip.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Strip.hs" } ] }, "method": "client/registerCapability", "id": 627 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ld.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ld.hs" } ] }, "method": "client/registerCapability", "id": 628 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ld.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ld.lhs" } ] }, "method": "client/registerCapability", "id": 629 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Ld.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Ld.hs" } ] }, "method": "client/registerCapability", "id": 630 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ar.hs" } ] }, "method": "client/registerCapability", "id": 631 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ar.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ar.lhs" } ] }, "method": "client/registerCapability", "id": 632 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Ar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Program/Ar.hs" } ] }, "method": "client/registerCapability", "id": 633 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PreProcess/Unlit.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/PreProcess/Unlit.hs" } ] }, "method": "client/registerCapability", "id": 634 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Utils.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Utils.lhs" } ] }, "method": "client/registerCapability", "id": 635 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Utils.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Utils.hs" } ] }, "method": "client/registerCapability", "id": 636 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/EnvironmentParser.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/EnvironmentParser.hs" } ] }, "method": "client/registerCapability", "id": 637 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/EnvironmentParser.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/EnvironmentParser.lhs" } ] }, "method": "client/registerCapability", "id": 638 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/EnvironmentParser.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/GHC/EnvironmentParser.hs" } ] }, "method": "client/registerCapability", "id": 639 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ComponentsGraph.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ComponentsGraph.hs" } ] }, "method": "client/registerCapability", "id": 640 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ComponentsGraph.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ComponentsGraph.lhs" } ] }, "method": "client/registerCapability", "id": 641 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ComponentsGraph.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ComponentsGraph.hs" } ] }, "method": "client/registerCapability", "id": 642 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ReadyComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ReadyComponent.hs" } ] }, "method": "client/registerCapability", "id": 643 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ReadyComponent.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ReadyComponent.lhs" } ] }, "method": "client/registerCapability", "id": 644 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ReadyComponent.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ReadyComponent.hs" } ] }, "method": "client/registerCapability", "id": 645 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/FullUnitId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/FullUnitId.hs" } ] }, "method": "client/registerCapability", "id": 646 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/FullUnitId.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/FullUnitId.lhs" } ] }, "method": "client/registerCapability", "id": 647 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/FullUnitId.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/FullUnitId.hs" } ] }, "method": "client/registerCapability", "id": 648 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "14/246" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Text.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Text.hs" } ] }, "method": "client/registerCapability", "id": 649 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Text.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Text.lhs" } ] }, "method": "client/registerCapability", "id": 650 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Text.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Text.hs" } ] }, "method": "client/registerCapability", "id": 651 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils/Json.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils/Json.hs" } ] }, "method": "client/registerCapability", "id": 652 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils/Json.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils/Json.lhs" } ] }, "method": "client/registerCapability", "id": 653 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Utils/Json.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Utils/Json.hs" } ] }, "method": "client/registerCapability", "id": 654 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleScope.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleScope.lhs" } ] }, "method": "client/registerCapability", "id": 655 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModuleScope.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/ModuleScope.hs" } ] }, "method": "client/registerCapability", "id": 656 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreModuleShape.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreModuleShape.hs" } ] }, "method": "client/registerCapability", "id": 657 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreModuleShape.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreModuleShape.lhs" } ] }, "method": "client/registerCapability", "id": 658 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/PreModuleShape.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Backpack/PreModuleShape.hs" } ] }, "method": "client/registerCapability", "id": 659 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "16/247" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/ShowBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/ShowBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 660 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/ShowBuildInfo.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/ShowBuildInfo.lhs" } ] }, "method": "client/registerCapability", "id": 661 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/ShowBuildInfo.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/ShowBuildInfo.hs" } ] }, "method": "client/registerCapability", "id": 662 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/Macros.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/Macros.hs" } ] }, "method": "client/registerCapability", "id": 663 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/Macros.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/Macros.lhs" } ] }, "method": "client/registerCapability", "id": 664 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build/Macros.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple/Build/Macros.hs" } ] }, "method": "client/registerCapability", "id": 665 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryVisibility.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LibraryVisibility.lhs" } ] }, "method": "client/registerCapability", "id": 666 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LibraryVisibility.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/LibraryVisibility.hs" } ] }, "method": "client/registerCapability", "id": 667 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/PrettyPrint.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/PrettyPrint.hs" } ] }, "method": "client/registerCapability", "id": 668 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiDependency.hs" } ] }, "method": "client/registerCapability", "id": 669 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/PrettyPrint.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/PrettyPrint.lhs" } ] }, "method": "client/registerCapability", "id": 670 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/PrettyPrint.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/PrettyPrint.hs" } ] }, "method": "client/registerCapability", "id": 671 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiDependency.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiDependency.lhs" } ] }, "method": "client/registerCapability", "id": 672 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Newtypes.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Newtypes.hs" } ] }, "method": "client/registerCapability", "id": 673 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Newtypes.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Newtypes.lhs" } ] }, "method": "client/registerCapability", "id": 674 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Newtypes.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Parsec/Newtypes.hs" } ] }, "method": "client/registerCapability", "id": 675 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AbiDependency.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/AbiDependency.hs" } ] }, "method": "client/registerCapability", "id": 676 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "16/248" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "15/248" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Executable/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Executable/Lens.hs" } ] }, "method": "client/registerCapability", "id": 677 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Quirks.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Quirks.hs" } ] }, "method": "client/registerCapability", "id": 678 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Quirks.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Quirks.lhs" } ] }, "method": "client/registerCapability", "id": 679 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark/Lens.hs" } ] }, "method": "client/registerCapability", "id": 680 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Quirks.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/PackageDescription/Quirks.hs" } ] }, "method": "client/registerCapability", "id": 681 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ConfVar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ConfVar.hs" } ] }, "method": "client/registerCapability", "id": 682 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ConfVar.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Fields/ConfVar.lhs" } ] }, "method": "client/registerCapability", "id": 683 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/ConfVar.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/ConfVar.hs" } ] }, "method": "client/registerCapability", "id": 684 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark/Lens.lhs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark/Lens.lhs" } ] }, "method": "client/registerCapability", "id": 685 } } <-- { "tag": "ReqRegisterCapability", "contents": { "jsonrpc": "2.0", "params": { "registrations": [ { "registerOptions": { "watchers": [ { "kind": 5, "globPattern": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Benchmark/Lens.hs" } ] }, "method": "workspace/didChangeWatchedFiles", "id": "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Types/Benchmark/Lens.hs" } ] }, "method": "client/registerCapability", "id": 686 } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "20/248" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "23/249" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "33/257" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "49/273" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "53/277" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "55/277" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "60/278" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "61/278" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "64/278" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "68/278" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "78/282" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "80/283" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "83/283" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "87/284" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "91/286" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotPublishDiagnostics", "contents": { "jsonrpc": "2.0", "params": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Lexer.hs", "diagnostics": [ { "severity": 3, "range": { "start": { "line": 72, "character": 0 }, "end": { "line": 72, "character": 13 } }, "source": "typecheck", "message": "Defined but not used: ‘alex_tab_size’", "tags": [ 1 ] }, { "severity": 3, "range": { "start": { "line": 193, "character": 0 }, "end": { "line": 193, "character": 17 } }, "source": "typecheck", "message": "Defined but not used: ‘alexInputPrevChar’", "tags": [ 1 ] } ] }, "method": "textDocument/publishDiagnostics" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "94/287" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "100/289" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "101/289" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "107/291" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "113/292" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "121/299" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "135/313" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "138/314" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "140/314" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "144/314" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "145/314" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "148/315" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "154/318" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "156/319" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "161/320" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "166/322" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "178/330" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "184/334" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "189/334" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "194/335" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "195/335" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "205/341" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "212/343" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "217/345" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "220/346" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "225/350" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "230/352" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "234/354" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "242/358" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "246/360" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "252/365" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "256/367" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "263/369" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "265/370" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "271/373" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "280/378" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "282/378" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "284/379" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "293/383" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "294/384" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "298/385" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "303/387" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "305/388" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "318/400" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "321/401" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "322/401" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "323/402" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "328/405" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "331/405" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "336/407" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "339/408" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "346/411" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "347/411" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "349/412" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "352/413" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "356/415" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "362/418" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "364/419" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "372/424" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "374/425" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "377/426" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "381/429" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "385/430" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "388/432" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "389/432" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "391/433" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "394/434" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "403/443" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "408/444" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "412/445" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "417/447" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "420/449" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "421/449" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "423/450" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "429/453" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "430/454" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "431/454" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "433/455" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "436/456" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "438/457" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "440/458" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "443/459" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "445/460" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "447/460" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "449/462" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "451/462" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "455/464" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "456/464" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "458/466" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "459/466" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "461/468" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "462/468" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "463/468" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "466/469" }, "token": "1" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "1" }, "method": "$/progress" } } [DEBUG] finish: kick (took 23.63s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: kick (took 23.63s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressEnd", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "end" }, "token": "1" }, "method": "$/progress" } } Running completions after edit benchmark --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 2 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 1 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } <-- { "tag": "ReqWorkDoneProgressCreate", "contents": { "jsonrpc": "2.0", "params": { "token": "237" }, "method": "window/workDoneProgress/create", "id": 687 } } <-- { "tag": "NotWorkDoneProgressBegin", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "begin", "title": "Processing" }, "token": "237" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "237" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "466/469" }, "token": "237" }, "method": "$/progress" } } <-- { "tag": "NotPublishDiagnostics", "contents": { "jsonrpc": "2.0", "params": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Fields/Lexer.hs", "diagnostics": [] }, "method": "textDocument/publishDiagnostics" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "237" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 1.30s) [DEBUG] finish: C:GetParsedModule (took 0.00s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: kick (took 1.43s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 1 } } 1.45s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 2 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 1.30s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "237" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressEnd", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "end" }, "token": "237" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: kick (took 1.43s)" }, "method": "window/logMessage" } } [DEBUG] finish: InitialLoad (took 1.44s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 2 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 3 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 3 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: InitialLoad (took 1.44s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "ReqWorkDoneProgressCreate", "contents": { "jsonrpc": "2.0", "params": { "token": "472" }, "method": "window/workDoneProgress/create", "id": 688 } } <-- { "tag": "NotWorkDoneProgressBegin", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "begin", "title": "Processing" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:GetParsedModule (took 0.00s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 3 } } 0.11s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 4 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.17s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 4 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 4 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 5 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.17s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.04s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 5 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 6 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 6 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 5 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 7 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 7 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 8 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 8 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 6 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 9 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 9 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 10 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 10 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 7 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 11 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.01s) [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 11 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 12 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 12 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 8 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 13 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 13 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 14 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 14 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 9 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 15 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestricti[DEBUG] finish: C:GetParsedModule (took 0.04s) on", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 15 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 16 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 16 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 10 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 17 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 17 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 18 } [DEBUG] finish: C:GetParsedModule (took 0.07s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.07s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 18 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 11 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 19 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.05s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 19 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 20 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 20 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 12 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 21 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setP[DEBUG] finish: C:GetParsedModule (took 0.04s) rogramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 21 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 22 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 22 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 13 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 23 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 23 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 24 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 24 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 14 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 25 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 25 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 26 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 26 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 15 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 27 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 27 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 28 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 28 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 16 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 29 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 29 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 30 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 30 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 17 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 31 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, [DEBUG] finish: C:GetParsedModule (took 0.05s) "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 31 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 32 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 32 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 18 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 33 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.00s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 33 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 34 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.17s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 34 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 19 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 35 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.17s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 35 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 36 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 36 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 20 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 37 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.05s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 37 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 38 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 38 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 21 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 39 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 39 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 40 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 40 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 22 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 41 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.07s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 41 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 42 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.07s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.26s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.26s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 42 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 23 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 43 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 43 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 44 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 44 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 24 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 45 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 45 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 46 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 46 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 25 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 47 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.06s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 47 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 48 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 48 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 26 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 49 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 49 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 50 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 50 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 27 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 51 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { [DEBUG] finish: C:GetParsedModule (took 0.05s) "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 51 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 52 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "469/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 52 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 28 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 53 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 53 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 54 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.07s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 54 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 29 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 55 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.04s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 55 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 56 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 56 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 30 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 57 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.03s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 57 } } 0.05s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 58 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 58 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 31 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 59 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 59 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 60 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 60 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 32 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 61 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 61 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 62 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 62 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 33 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 63 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 63 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 64 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 64 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 34 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 65 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 65 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 66 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 66 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 35 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 67 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setP[DEBUG] finish: C:GetParsedModule (took 0.04s) rogramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 67 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 68 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 68 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 36 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 69 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 69 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 70 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 70 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 37 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 71 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 71 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 72 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 72 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 38 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 73 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 73 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 74 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 74 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 39 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 75 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 75 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 76 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 76 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 40 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 77 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 77 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 78 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 78 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 41 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 79 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 79 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 80 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 80 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 42 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 81 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 81 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 82 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 82 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 43 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 83 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.04s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 83 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 84 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 84 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 44 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 85 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 85 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 86 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 86 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 45 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 87 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 87 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 88 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 88 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 46 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 89 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation[DEBUG] finish: C:GetParsedModule (took 0.05s) ": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 89 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 90 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 90 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 47 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 91 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.01s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "469/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setP[DEBUG] finish: C:GetParsedModule (took 0.06s) rogramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 91 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 92 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 92 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 48 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 93 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 93 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 94 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 94 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 49 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 95 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 95 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 96 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 96 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 50 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 97 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 97 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 98 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 98 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 51 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 99 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 99 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 100 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 100 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 52 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 101 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.06s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 101 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 102 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 102 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 53 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 103 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.07s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 103 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 104 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.07s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.24s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 104 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 54 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 105 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.24s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 105 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 106 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 106 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 55 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 107 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.06s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 107 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 108 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 108 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 56 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 109 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 109 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 110 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 110 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 57 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 111 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 111 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 112 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 112 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 58 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 113 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 113 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 114 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 114 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 59 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 115 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.01s) [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 115 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 116 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 116 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 60 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 117 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.04s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 117 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 118 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 118 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 61 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 119 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 119 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 120 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 120 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 62 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 121 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.04s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 121 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 122 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 122 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 63 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 123 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 123 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 124 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 124 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 64 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 125 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.06s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 125 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 126 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 126 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 65 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 127 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 127 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 128 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 128 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 66 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 129 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.06s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 129 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 130 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 130 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 67 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 131 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.06s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 131 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 132 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 132 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 68 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 133 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.01s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 133 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 134 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.01s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 134 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 69 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 135 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 135 } } 0.11s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 136 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 136 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 70 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 137 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "469/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 137 } } 0.11s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 138 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.24s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 138 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 71 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 139 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.24s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 139 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 140 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 140 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 72 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 141 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 141 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 142 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 142 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 73 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 143 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 143 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 144 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.24s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.24s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 144 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 74 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 145 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.00s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 145 } } 0.11s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 146 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.18s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 146 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 75 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 147 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.18s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 147 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 148 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 148 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 76 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 149 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.03s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 149 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 150 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.19s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 150 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 77 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 151 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.19s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 151 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 152 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 152 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 78 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 153 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 153 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 154 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 154 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 79 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 155 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 155 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 156 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 156 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 80 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 157 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 157 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 158 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 158 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 81 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 159 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 159 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 160 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 160 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 82 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 161 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.04s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 161 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 162 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 162 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 83 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 163 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 163 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 164 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 164 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 84 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 165 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 165 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 166 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 166 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 85 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 167 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 167 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 168 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 168 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 86 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 169 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 169 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 170 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 170 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 87 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 171 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.06s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 171 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 172 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 172 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 88 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 173 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Define[DEBUG] finish: C:GetParsedModule (took 0.04s) d in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 173 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 174 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 174 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 89 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 175 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 175 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 176 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 176 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 90 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 177 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 177 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 178 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 178 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 91 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 179 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 179 } } 0.07s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 180 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 180 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 92 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 181 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": "::[DEBUG] finish: C:GetParsedModule (took 0.06s) a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 181 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 182 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 182 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 93 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 183 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 183 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 184 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 184 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 94 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 185 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.03s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 185 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 186 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.03s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.20s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.20s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 186 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 95 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 187 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.01s) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 187 } } 0.10s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 188 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 188 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 96 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 189 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.04s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 189 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 190 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.22s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 190 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 97 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 191 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.22s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [DEBUG] Restarting build session (aborting the previous one took 0.01s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.01s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.05s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 191 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 192 } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "469/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 192 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 98 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 193 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": [DEBUG] finish: C:GetParsedModule (took 0.06s) "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 193 } } 0.09s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 194 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "468/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 194 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 99 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 195 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs [DEBUG] finish: C:GetParsedModule (took 0.04s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 195 } } 0.06s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 196 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.04s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.21s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 196 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 100 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 197 } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.21s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setP[DEBUG] finish: C:GetParsedModule (took 0.05s) rogramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 197 } } 0.08s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 198 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.05s)" }, "method": "window/logMessage" } } [DEBUG] finish: C:ProduceCompletions (took 0.23s) <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 198 } } --> { "jsonrpc": "2.0", "params": { "contentChanges": [ { "text": " ", "range": { "start": { "line": 854, "character": 23 }, "end": { "line": 854, "character": 23 } } } ], "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs", "version": 101 } }, "method": "textDocument/didChange" } --> { "jsonrpc": "2.0", "params": { "textDocument": { "uri": "file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs" }, "position": { "line": 853, "character": 12 } }, "method": "textDocument/completion", "id": 199 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.23s)" }, "method": "window/logMessage" } } [DEBUG] Set files of interest to: [(NormalizedFilePath "/home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs",Modified)] [DEBUG] Restarting build session (aborting the previous one took 0.00s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Restarting build session (aborting the previous one took 0.00s)" }, "method": "window/logMessage" } } [DEBUG] Finishing build session(exception: AsyncCancelled) [INFO] Modified text document: file:///home/vsts/work/1/s/bench/example/Cabal-3.0.0.0/Distribution/Simple.hs <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "Finishing build session(exception: AsyncCancelled)" }, "method": "window/logMessage" } } [DEBUG] finish: C:GetParsedModule (took 0.06s) <-- { "tag": "RspCompletion", "contents": { "result": [ { "kind": 9, "label": "Distribution.Compat.GetShortPathName", "tags": [] }, { "kind": 9, "label": "Distribution.Pretty", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Parsec", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Environment", "tags": [] }, { "kind": 9, "label": "Distribution.Compat.Directory", "tags": [] }, { "kind": 9, "label": "System.FilePath", "tags": [] }, { "kind": 9, "label": "System.Exit", "tags": [] }, { "kind": 9, "label": "System.Directory", "tags": [] }, { "kind": 9, "label": "System.Environment", "tags": [] }, { "kind": 9, "label": "Language.Haskell.Extension", "tags": [] }, { "kind": 9, "label": "Distribution.Verbosity", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Utils", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Doctest", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Install", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Test", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.BuildPaths", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Register", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.SrcDist", "tags": [] }, { "kind": 9, "label": "Distribution.Simple.Setup", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription.Configuration", "tags": [] }, { "kind": 9, "label": "Distribution.PackageDescription", "tags": [] }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "SetupBuildInfo", "tags": [], "detail": ":: [Dependency] -> Bool -> SetupBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nDisplay a \"setup status message\". Prefer using setupMessage'\n if possible.*\t*\t*\n\n" }, "label": "setupMessage", "tags": [], "detail": ":: Verbosity -> String -> PackageIdentifier -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupDepends", "tags": [], "detail": ":: SetupBuildInfo -> [Dependency]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileOrdinary", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "setFileExecutable", "tags": [], "detail": ":: FilePath -> NoCallStackIO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.License'*\n*\t*\t*\n\n\nConvert old `License` to SPDX `SPDX.License` .\n Non-SPDX licenses are converted to `SPDX.LicenseRef` .*\t*\t*\n\n" }, "label": "licenseToSPDX", "tags": [], "detail": ":: License -> License" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nChange the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually set it before configuring any programs.*\t*\t*\n\n" }, "label": "setProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nIs this a default 'custom-setup' section added by the cabal-install\n code (as opposed to user-provided)? This field is only used\n internally, and doesn't correspond to anything in the .cabal\n file. See #3199.*\t*\t*\n\n" }, "label": "defaultSetupDepends", "tags": [], "detail": ":: SetupBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "setupBuildInfo", "tags": [], "detail": ":: PackageDescription -> Maybe SetupBuildInfo" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nA specific dir*\t*\t*\n\n" }, "label": "ProgramSearchPathDir", "tags": [], "detail": ":: FilePath -> ProgramSearchPathEntry" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the use of tuple sections, e.g. `(, True)` desugars into\n `x -> (x, True)` . \n+ \n\n*\t*\t*\n\n" }, "label": "TupleSections", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "GeneralisedNewtypeDeriving", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "IntersectVersionRangesF", "tags": [], "detail": ":: a -> a -> VersionRangeF a" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nThe system default*\t*\t*\n\n" }, "label": "ProgramSearchPathDefault", "tags": [], "detail": ":: ProgramSearchPathEntry" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nThe character that is used to separate the entries in the $PATH environment variable. \n```haskell\nWindows: searchPathSeparator == ';'\nPosix: searchPathSeparator == ':'\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:searchPathSeparator)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#searchPathSeparator)" }, "label": "searchPathSeparator", "tags": [], "detail": ":: Char" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nModify the current `ProgramSearchPath` used by the `ProgramDb` .\n This will affect programs that are configured from here on, so you\n should usually modify it before configuring any programs.*\t*\t*\n\n" }, "label": "modifyProgramSearchPath", "tags": [], "detail": ":: (ProgramSearchPath -> ProgramSearchPath) -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nParses the given file into a `GenericPackageDescription` . \n\nIn Cabal 1.2 the syntax for package descriptions was changed to a format\n with sections and possibly indented property descriptions.*\t*\t*\n\n" }, "label": "parseGenericPackageDescription", "tags": [], "detail": ":: ByteString -> ParseResult GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\n`Maybe` variant of `parseGenericPackageDescription`*\t*\t*\n\n" }, "label": "parseGenericPackageDescriptionMaybe", "tags": [], "detail": ":: ByteString -> Maybe GenericPackageDescription" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Parsec'*\n*\t*\t*\n\n\nDestruct a `ParseResult` into the emitted warnings and either\n a successful value or\n list of errors and possibly recovered a spec-version declaration.*\t*\t*\n\n" }, "label": "runParseResult", "tags": [], "detail": ":: ParseResult a -> ([PWarning], Either (Maybe Version, [PError]) a)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `doesFileExist` , but also checks that the file is executable.*\t*\t*\n\n" }, "label": "doesExecutableExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nA total variant of `tail` .*\t*\t*\n\n" }, "label": "safeTail", "tags": [], "detail": ":: [a] -> [a]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription.Configuration'*\n*\t*\t*\n\n\nParse a configuration condition from a string.*\t*\t*\n\n" }, "label": "parseCondition", "tags": [], "detail": ":: CabalParsing m => m (Condition ConfVar)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "findProgramOnSearchPath", "tags": [], "detail": ":: Verbosity\n-> ProgramSearchPath\n-> FilePath\n-> IO (Maybe (FilePath, [FilePath]))" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "defaultProgramSearchPath", "tags": [], "detail": ":: ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nGet the current `ProgramSearchPath` used by the `ProgramDb` .\n This is the default list of locations where programs are looked for when\n configuring them. This can be overridden for specific programs (with\n `userSpecifyPath` ), and specific known programs can modify or ignore this\n search path in their own configuration code.*\t*\t*\n\n" }, "label": "getProgramSearchPath", "tags": [], "detail": ":: ProgramDb -> ProgramSearchPath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nUser-specify this path. Basically override any path information\n for this program in the configuration. If it's not a known\n program ignore it.*\t*\t*\n\n" }, "label": "userSpecifyPath", "tags": [], "detail": ":: String -> FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n\nLike `userSpecifyPath` but for a list of progs and their paths.*\t*\t*\n\n" }, "label": "userSpecifyPaths", "tags": [], "detail": ":: [(String, FilePath)] -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program.Db'*\n*\t*\t*\n\n" }, "label": "userMaybeSpecifyPath", "tags": [], "detail": ":: String -> Maybe FilePath -> ProgramDb -> ProgramDb" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nThe version range `vr1 && vr2` \n```haskell\n withinRange v' (intersectVersionRanges vr1 vr2)\n= withinRange v' vr1 && withinRange v' vr2\n```\n*\t*\t*\n\n" }, "label": "intersectVersionRanges", "tags": [], "detail": ":: VersionRange -> VersionRange -> VersionRange" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n" }, "label": "intersectVersionIntervals", "tags": [], "detail": ":: VersionIntervals -> VersionIntervals -> VersionIntervals" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nThe `Extensions` that are used by all modules in this component*\t*\t*\n\n" }, "label": "usedExtensions", "tags": [], "detail": ":: BuildInfo -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nWhether any modules in this component use Template Haskell or\n Quasi Quotes*\t*\t*\n\n" }, "label": "usesTemplateHaskellOrQQ", "tags": [], "detail": ":: BuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-site printing when we log.*\t*\t*\n\n" }, "label": "verboseCallSite", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on verbose call-stack printing when we log.*\t*\t*\n\n" }, "label": "verboseCallStack", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn on `-----BEGIN CABAL OUTPUT-----` markers for output\n from Cabal (as opposed to GHC, or system dependent).*\t*\t*\n\n" }, "label": "verboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off marking; useful for suppressing nondeterministic output.*\t*\t*\n\n" }, "label": "verboseUnmarkOutput", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTurn off timestamps for log messages.*\t*\t*\n\n" }, "label": "verboseNoTimestamp", "tags": [], "detail": ":: Verbosity -> Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nInsert or update the boolean value of a flag. \n\nIf the flag is already present in the `FlagAssigment` , the\n value will be updated and the fact that multiple values have\n been provided for that flag will be recorded so that a\n warning can be generated later on.*\t*\t*\n\n" }, "label": "insertFlagAssignment", "tags": [], "detail": ":: FlagName -> Bool -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nParses a flag assignment.*\t*\t*\n\n" }, "label": "parsecFlagAssignment", "tags": [], "detail": ":: CabalParsing m => m FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showProfDetailLevel", "tags": [], "detail": ":: ProfDetailLevel -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe --user/--global flag*\t*\t*\n\n" }, "label": "configUserInstall", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testShowDetails", "tags": [], "detail": ":: TestFlags -> Flag TestShowDetails" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "registerAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Just Distribution.Simple'*\n*\t*\t*\n\n" }, "label": "unregisterAction", "tags": [], "detail": ":: UserHooks -> RegisterFlags -> Args -> IO ()" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nCause a type variable in a signature, which has an explicit\n `forall` quantifier, to scope over the definition of the\n accompanying value declaration. \n+ \n\n*\t*\t*\n\n" }, "label": "ScopedTypeVariables", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "HaskellSuite", "tags": [], "detail": ":: String -> CompilerFlavor" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow existentially-quantified data constructors. \n+ \n\n*\t*\t*\n\n" }, "label": "ExistentialQuantification", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable non-decreasing indentation for `do` blocks. \n+ \n\n*\t*\t*\n\n" }, "label": "NondecreasingIndentation", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "RegisterOptions", "tags": [], "detail": ":: Bool -> Bool -> Bool -> RegisterOptions" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe result of the test suite being run, eg\n `pass` , `fail` , or `error` .*\t*\t*\n\n" }, "label": "TestSuiteResultVar", "tags": [], "detail": ":: PathTemplateVariable" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nDisable a known extension*\t*\t*\n\n" }, "label": "DisableExtension", "tags": [], "detail": ":: KnownExtension -> Extension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable the dreaded monomorphism restriction. \n+ \n\n*\t*\t*\n\n" }, "label": "MonomorphismRestriction", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nEnable type synonyms which are transparent in some definitions\n and opaque elsewhere, as a way of implementing abstract\n datatypes. \n+ \n\n*\t*\t*\n\n" }, "label": "RestrictedTypeSynonyms", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow a class method's type to place additional constraints on\n a class type variable. \n+ \n\n*\t*\t*\n\n" }, "label": "ConstrainedClassMethods", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nRelax the interpretation of left operator sections to allow\n unary postfix operators. \n+ \n\n*\t*\t*\n\n" }, "label": "PostfixOperators", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nAllow imports to be qualified with a safe keyword that requires\n the imported module be trusted as according to the Safe Haskell\n definition of trust. \n```haskell\nimport safe Network.Socket\n```\n \n+ \n\n*\t*\t*\n\n" }, "label": "SafeImports", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n\nA subset of `TemplateHaskell` including only quoting.*\t*\t*\n\n" }, "label": "TemplateHaskellQuotes", "tags": [], "detail": ":: KnownExtension" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nA test suite that does not conform to one of the above interfaces for\n the given reason (e.g. unknown test type).*\t*\t*\n\n" }, "label": "TestSuiteUnsupported", "tags": [], "detail": ":: TestType -> TestSuiteInterface" }, { "kind": 4, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "TestComponentLocalBuildInfo", "tags": [], "detail": ":: ComponentName\n-> ComponentId\n-> UnitId\n-> [(UnitId, MungedPackageId)]\n-> [(OpenUnitId, ModuleRenaming)]\n-> [UnitId]\n-> [UnitId]\n-> ComponentLocalBuildInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesFileExist` returns `True` \nif the argument file exists and is not a directory, and `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesFileExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesFileExist)" }, "label": "doesFileExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.Directory'*\n*\t*\t*\n\n\nThe operation `doesDirectoryExist` returns `True` if the argument file\nexists and is either a directory or a symbolic link to a directory,\nand `False` otherwise.*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/System-Directory.html#v:doesDirectoryExist)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/directory-1.3.3.0/src/System-Directory.html#doesDirectoryExist)" }, "label": "doesDirectoryExist", "tags": [], "detail": ":: FilePath -> IO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'System.FilePath'*\n*\t*\t*\n\n\nJust as `splitPath` , but don't add the trailing slashes to each element. \n```haskell\n splitDirectories \"/directory/file.ext\" == [\"/\",\"directory\",\"file.ext\"]\n splitDirectories \"test/file\" == [\"test\",\"file\"]\n splitDirectories \"/test/file\" == [\"/\",\"test\",\"file\"]\nWindows: splitDirectories \"C:\\\\test\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n Valid x => joinPath (splitDirectories x) \\`equalFilePath\\` x\n splitDirectories \"\" == []\nWindows: splitDirectories \"C:\\\\test\\\\\\\\\\\\file\" == [\"C:\\\\\", \"test\", \"file\"]\n splitDirectories \"/test///file\" == [\"/\",\"test\",\"file\"]\n```\n*\t*\t*\n\n*\t*\t*\n[Documentation](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/System-FilePath-Posix.html#v:splitDirectories)*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/filepath-1.4.2.1/src/System-FilePath-Posix.html#splitDirectories)" }, "label": "splitDirectories", "tags": [], "detail": ":: FilePath -> [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nReturn the \"dist/\" prefix, or the default prefix. The prefix is taken\n from (in order of highest to lowest preference) the override prefix, the\n \"CABAL_BUILDDIR\" environment variable, or `defaultDistPref` is used. Call\n this function to resolve a `*DistPref` flag whenever it is not known to be\n set. (The `*DistPref` flags are always set to a definite value before\n invoking `UserHooks` .)*\t*\t*\n\n" }, "label": "findDistPrefOrDefault", "tags": [], "detail": ":: Flag FilePath -> NoCallStackIO FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourVerbosity", "tags": [], "detail": ":: HscolourFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourCabalFilePath", "tags": [], "detail": ":: HscolourFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "doctestVerbosity", "tags": [], "detail": ":: DoctestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after doctest command. Second arg indicates verbosity level.*\t*\t*\n\n" }, "label": "postDoctest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> DoctestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installVerbosity", "tags": [], "detail": ":: InstallFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installCabalFilePath", "tags": [], "detail": ":: InstallFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistVerbosity", "tags": [], "detail": ":: SDistFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testVerbosity", "tags": [], "detail": ":: TestFlags -> Flag Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.UserHooks'*\n*\t*\t*\n\n\nHook to run after test command.*\t*\t*\n\n" }, "label": "postTest", "tags": [], "detail": ":: UserHooks\n-> Args\n-> TestFlags\n-> PackageDescription\n-> LocalBuildInfo\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "installDest", "tags": [], "detail": ":: InstallFlags -> Flag CopyDest" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Version'*\n*\t*\t*\n\n\nView a `VersionRange` as a union of intervals. \n\nThis provides a canonical view of the semantics of a `VersionRange` as\n opposed to the syntax of the expression used to define it. For the syntactic\n view use `foldVersionRange` . \n\nEach interval is non-empty. The sequence is in increasing order and no\n intervals overlap or touch. Therefore only the first and last can be\n unbounded. The sequence can be empty if the range is empty\n (e.g. a range expression like `[&&](1) 2` ). \n\nOther checks are trivial to implement using this view. For example: \n```haskell\nisNoVersion vr | [] <- asVersionIntervals vr = True\n | otherwise = False\n```\n \n```haskell\nisSpecificVersion vr\n | [(LowerBound v InclusiveBound\n ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr\n , v == v' = Just v\n | otherwise = Nothing\n```\n*\t*\t*\n\n" }, "label": "asVersionIntervals", "tags": [], "detail": ":: VersionRange -> [VersionInterval]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n" }, "label": "showFilePath", "tags": [], "detail": ":: FilePath -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text, ensuring that it is vertically aligned,\n and with blank lines replaced by dots for correct re-parsing.*\t*\t*\n\n" }, "label": "showFreeText", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Pretty'*\n*\t*\t*\n\n\nPretty-print free-format text.\n Since `cabal-version: 3.0` we don't replace blank lines with dots.*\t*\t*\n\n" }, "label": "showFreeTextV3", "tags": [], "detail": ":: String -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun an IO computation, returning `e` if it raises a \"file\n does not exist\" error.*\t*\t*\n\n" }, "label": "handleDoesNotExist", "tags": [], "detail": ":: a -> NoCallStackIO a -> NoCallStackIO a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExit", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitCode", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemExitWithEnv", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> [(String, String)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output. \n\nThe output is assumed to be text in the locale encoding.*\t*\t*\n\n" }, "label": "rawSystemStdout", "tags": [], "detail": ":: Verbosity -> FilePath -> [String] -> IO String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nRun a command and return its output, errors and exit status. Optionally\n also supply some input. Also provides control over whether the binary/text\n mode of the input and output.*\t*\t*\n\n" }, "label": "rawSystemStdInOut", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe IOData\n-> IODataMode\n-> IO (IOData, String, ExitCode)" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "rawSystemIOWithEnv", "tags": [], "detail": ":: Verbosity\n-> FilePath\n-> [String]\n-> Maybe FilePath\n-> Maybe [(String, String)]\n-> Maybe Handle\n-> Maybe Handle\n-> Maybe Handle\n-> IO ExitCode" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall an executable file. This is like a file copy but the permissions\n are set appropriately for an installed file. On Unix it is \"-rwxr-xr-x\"\n while on Windows it uses the default permissions for the target directory.*\t*\t*\n\n" }, "label": "installExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nInstall a file that may or not be executable, preserving permissions.*\t*\t*\n\n" }, "label": "installMaybeExecutableFile", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installExecutableFile` .*\t*\t*\n\n" }, "label": "installExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis is like `copyFiles` but uses `installMaybeExecutableFile` .*\t*\t*\n\n" }, "label": "installMaybeExecutableFiles", "tags": [], "detail": ":: Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nThis installs all the files in a directory to a target location,\n preserving the directory layout. All the files are assumed to be ordinary\n rather than executable files.*\t*\t*\n\n" }, "label": "installDirectoryContents", "tags": [], "detail": ":: Verbosity -> FilePath -> FilePath -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "shortRelativePath", "tags": [], "detail": ":: FilePath -> FilePath -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n" }, "label": "findAllFilesWithExtension", "tags": [], "detail": ":: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nIs this directory in the system search path?*\t*\t*\n\n" }, "label": "isInSearchPath", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\nLike `moreRecentFile` , but also checks that the first file exists.*\t*\t*\n\n" }, "label": "existsAndIsMoreRecentThan", "tags": [], "detail": ":: FilePath -> FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n\n`isAbsoluteOnAnyPlatform` and `isRelativeOnAnyPlatform` are like\n `System.FilePath.isAbsolute` and `System.FilePath.isRelative` but have\n platform independent heuristics.\n The System.FilePath exists in two versions, Windows and Posix. The two\n versions don't agree on what is a relative path and we don't know if we're\n given Windows or Posix paths.\n This results in false positives when running on Posix and inspecting\n Windows paths, like the hackage server does.\n System.FilePath.Posix.isAbsolute \"C:\\hello\" == False\n System.FilePath.Windows.isAbsolute \"/hello\" == False\n This means that we would treat paths that start with \"/\" to be absolute.\n On Posix they are indeed absolute, while on Windows they are not. \n\nThe portable versions should be used when we might deal with paths that\n are from another OS than the host OS. For example, the Hackage Server\n deals with both Windows and Posix paths while performing the\n PackageDescription checks. In contrast, when we run 'cabal configure' we\n do expect the paths to be correct for our OS and we should not have to use\n the platform independent heuristics.*\t*\t*\n\n" }, "label": "isAbsoluteOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Utils'*\n*\t*\t*\n\n```haskell\nisRelativeOnAnyPlatform = not . `isAbsoluteOnAnyPlatform`\n```\n*\t*\t*\n\n" }, "label": "isRelativeOnAnyPlatform", "tags": [], "detail": ":: FilePath -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Configure'*\n*\t*\t*\n\n\nA set of files (or directories) that can be monitored to detect when\n there might have been a change in the installed packages.*\t*\t*\n\n" }, "label": "getInstalledPackagesMonitorFiles", "tags": [], "detail": ":: Verbosity\n-> Compiler\n-> PackageDBStack\n-> ProgramDb\n-> Platform\n-> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nUnsafely create a `DefUnitId` from a `UnitId` . Your responsibility\n is to ensure that the `DefUnitId` invariant holds.*\t*\t*\n\n" }, "label": "unsafeMkDefUnitId", "tags": [], "detail": ":: UnitId -> DefUnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n\nCreate a unit identity with no associated hash directly\n from a `ComponentId` .*\t*\t*\n\n" }, "label": "newSimpleUnitId", "tags": [], "detail": ":: ComponentId -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "configAbsolutePaths", "tags": [], "detail": ":: ConfigFlags -> NoCallStackIO ConfigFlags" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "showPackageDbList", "tags": [], "detail": ":: [Maybe PackageDB] -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "programFlagsDescription", "tags": [], "detail": ":: ProgramDb -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Build'*\n*\t*\t*\n\n\nStart an interpreter without loading any package files.*\t*\t*\n\n" }, "label": "startInterpreter", "tags": [], "detail": ":: Verbosity\n-> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nDefault \"usage\" documentation text for commands.*\t*\t*\n\n" }, "label": "usageDefault", "tags": [], "detail": ":: String -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Command'*\n*\t*\t*\n\n\nCreate \"usage\" documentation from a list of parameter\n configurations.*\t*\t*\n\n" }, "label": "usageAlternatives", "tags": [], "detail": ":: String -> [String] -> String -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Package'*\n*\t*\t*\n\n" }, "label": "installedUnitId", "tags": [], "detail": ":: HasUnitId pkg => pkg -> UnitId" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nGet all the auto generated module names from a test suite.\n This are a subset of `testModules` .*\t*\t*\n\n" }, "label": "testModulesAutogen", "tags": [], "detail": ":: TestSuite -> [ModuleName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nDoes this compiler's \"ar\" command supports response file\n arguments (i.e. @file-style arguments).*\t*\t*\n\n" }, "label": "arResponseFilesSupported", "tags": [], "detail": ":: Compiler -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "substPathTemplate", "tags": [], "detail": ":: PackageId -> LocalBuildInfo -> UnitId -> PathTemplate -> FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDoes this package have any test suites?*\t*\t*\n\n" }, "label": "hasTests", "tags": [], "detail": ":: PackageDescription -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nBackwards compatibility function which computes the InstallDirs\n assuming that `$libname` points to the public library (or some fake\n package identifier if there is no public library.) IF AT ALL\n POSSIBLE, please use `absoluteComponentInstallDirs` instead.*\t*\t*\n\n" }, "label": "absoluteInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSubstitute the install dir templates into each other. \n\nTo prevent cyclic substitutions, only some variables are allowed in\n particular dir templates. If out of scope vars are present, they are not\n substituted for. Checking for any remaining unsubstituted vars can be done\n as a subsequent operation. \n\nThe reason it is done this way is so that in `prefixRelativeInstallDirs` we\n can replace `prefix` with the `PrefixVar` and get resulting\n `PathTemplate` s that still have the `PrefixVar` in them. Doing this makes it\n each to check which paths are relative to the $prefix.*\t*\t*\n\n" }, "label": "substituteInstallDirTemplates", "tags": [], "detail": ":: PathTemplateEnv -> InstallDirTemplates -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "installDirsTemplateEnv", "tags": [], "detail": ":: InstallDirs PathTemplate -> PathTemplateEnv" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Program'*\n*\t*\t*\n\n" }, "label": "simpleProgramInvocation", "tags": [], "detail": ":: FilePath -> [String] -> ProgramInvocation" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "hcSharedOptions", "tags": [], "detail": ":: CompilerFlavor -> BuildInfo -> [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nApply preprocessors to the sources from `hsSourceDirs` for a given\n component (lib, exe, or test suite).*\t*\t*\n\n" }, "label": "preprocessComponent", "tags": [], "detail": ":: PackageDescription\n-> Component\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> Bool\n-> Verbosity\n-> [PPSuffixHandler]\n-> IO ()" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.PreProcess'*\n*\t*\t*\n\n\nFind any extra C sources generated by preprocessing that need to\n be added to the component (addresses issue #238).*\t*\t*\n\n" }, "label": "preprocessExtras", "tags": [], "detail": ":: Verbosity -> Component -> LocalBuildInfo -> IO [FilePath]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.BuildPaths'*\n*\t*\t*\n\n\nExtension for static libraries \n\nTODO: Here, as well as in dllExtension, it's really the target OS that we're\n interested in, not the build OS.*\t*\t*\n\n" }, "label": "staticLibExtension", "tags": [], "detail": ":: Platform -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n" }, "label": "silent", "tags": [], "detail": ":: Verbosity" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we had called `lessVerbose` on the verbosity*\t*\t*\n\n" }, "label": "isVerboseQuiet", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call sites when we log.*\t*\t*\n\n" }, "label": "isVerboseCallSite", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output call stacks when we log.*\t*\t*\n\n" }, "label": "isVerboseCallStack", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if we should output markets.*\t*\t*\n\n" }, "label": "isVerboseMarkOutput", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Verbosity'*\n*\t*\t*\n\n\nTest if if we should output timestamps when we log.*\t*\t*\n\n" }, "label": "isVerboseTimestamp", "tags": [], "detail": ":: Verbosity -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "showComponentName", "tags": [], "detail": ":: ComponentName -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n" }, "label": "absoluteInstallCommandDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nSee `InstallDirs.absoluteInstallDirs` .*\t*\t*\n\n" }, "label": "absoluteComponentInstallDirs", "tags": [], "detail": ":: PackageDescription\n-> LocalBuildInfo -> UnitId -> CopyDest -> InstallDirs FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nDefaults are `True` , `False` and `False`*\t*\t*\n\n" }, "label": "defaultRegisterOptions", "tags": [], "detail": ":: RegisterOptions" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nConstruct a `FlagAssignment` from a list of flag/value pairs. \n\nIf duplicate flags occur in the input list, the later entries\n in the list will take precedence.*\t*\t*\n\n" }, "label": "mkFlagAssignment", "tags": [], "detail": ":: [(FlagName, Bool)] -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nDeconstruct a `FlagAssignment` into a list of flag/value pairs. \n```haskell\n `null` ( `findDuplicateFlagAssignments` fa) ==> ( `mkFlagAssignment` . `unFlagAssignment` ) fa == fa\n```\n*\t*\t*\n\n" }, "label": "unFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> [(FlagName, Bool)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nTest whether `FlagAssignment` is empty.*\t*\t*\n\n" }, "label": "nullFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nRemove all flag-assignments from the first `FlagAssignment` that\n are contained in the second `FlagAssignment` \n\nNB/TODO: This currently only removes flag assignments which also\n match the value assignment! We should review the code which uses\n this operation to figure out if this it's not enough to only\n compare the flagnames without the values.*\t*\t*\n\n" }, "label": "diffFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> FlagAssignment -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nLookup the value for a flag \n\nReturns `Nothing` if the flag isn't contained in the `FlagAssignment` .*\t*\t*\n\n" }, "label": "lookupFlagAssignment", "tags": [], "detail": ":: FlagName -> FlagAssignment -> Maybe Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nPretty-prints a flag assignment.*\t*\t*\n\n" }, "label": "dispFlagAssignment", "tags": [], "detail": ":: FlagAssignment -> Doc" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n\nFind the `FlagName` s that have been listed more than once.*\t*\t*\n\n" }, "label": "findDuplicateFlagAssignments", "tags": [], "detail": ":: FlagAssignment -> [FlagName]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Language.Haskell.Extension'*\n*\t*\t*\n\n" }, "label": "classifyExtension", "tags": [], "detail": ":: String -> Extension" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n" }, "label": "doesPackageDBExist", "tags": [], "detail": ":: FilePath -> NoCallStackIO Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nConstruct `InstalledPackageInfo` for the final install location of a\n library package. \n\nThis function knows about the layout of installed packages.*\t*\t*\n\n" }, "label": "absoluteInstalledPackageInfo", "tags": [], "detail": ":: PackageDescription\n-> AbiHash\n-> Library\n-> LocalBuildInfo\n-> ComponentLocalBuildInfo\n-> InstalledPackageInfo" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "showCompilerIdWithAbi", "tags": [], "detail": ":: Compiler -> String" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nMake package paths absolute*\t*\t*\n\n" }, "label": "absolutePackageDBPaths", "tags": [], "detail": ":: PackageDBStack -> NoCallStackIO PackageDBStack" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n" }, "label": "absolutePackageDBPath", "tags": [], "detail": ":: PackageDB -> NoCallStackIO PackageDB" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Compiler'*\n*\t*\t*\n\n\nFor the given compiler, return the extensions it does not support.*\t*\t*\n\n" }, "label": "unsupportedExtensions", "tags": [], "detail": ":: Compiler -> [Extension] -> [Extension]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\n`True` if the argument is an IEEE negative zero*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#isNegativeZero)" }, "label": "isNegativeZero", "tags": [], "detail": ":: RealFloat a => a -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Compat.Prelude'*\n*\t*\t*\n\n\nmultiplies a floating-point number by an integer power of the radix*\t*\t*\n\n*\t*\t*\n[Source](file:///home/vsts/work/1/.stack/programs/x86_64-linux/ghc-8.6.5/share/doc/ghc-8.6.5/html/libraries/base-4.12.0.0/src/GHC-Float.html#scaleFloat)" }, "label": "scaleFloat", "tags": [], "detail": ":: RealFloat a => Int -> a -> a" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "sharedOptions", "tags": [], "detail": ":: BuildInfo -> PerCompilerFlavor [String]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.PackageDescription'*\n*\t*\t*\n\n" }, "label": "testedWith", "tags": [], "detail": ":: PackageDescription -> [(CompilerFlavor, VersionRange)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nEnable -split-sections with GHC*\t*\t*\n\n" }, "label": "configSplitSections", "tags": [], "detail": ":: ConfigFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n\nThe requested Backpack instantiation. If empty, either this\n package does not use Backpack, or we just want to typecheck\n the indefinite package.*\t*\t*\n\n" }, "label": "configInstantiateWith", "tags": [], "detail": ":: ConfigFlags -> [(ModuleName, Module)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "sDistDirectory", "tags": [], "detail": ":: SDistFlags -> Flag FilePath" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourExecutables", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "hscolourTestSuites", "tags": [], "detail": ":: HscolourFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testKeepTix", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Setup'*\n*\t*\t*\n\n" }, "label": "testFailWhenNoTestSuites", "tags": [], "detail": ":: TestFlags -> Flag Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nIs this an indefinite component (i.e. has unfilled holes)?*\t*\t*\n\n" }, "label": "componentIsIndefinite_", "tags": [], "detail": ":: ComponentLocalBuildInfo -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nHow the component was instantiated*\t*\t*\n\n" }, "label": "componentInstantiatedWith", "tags": [], "detail": ":: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nAllows re-registering / overwriting an existing package*\t*\t*\n\n" }, "label": "registerAllowOverwrite", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.Register'*\n*\t*\t*\n\n\nInsist on the ability to register multiple instances of a\n single version of a single package. This will fail if the `hc-pkg` \n does not support it, see `nativeMultiInstance` and\n `recacheMultiInstance` .*\t*\t*\n\n" }, "label": "registerMultiInstance", "tags": [], "detail": ":: RegisterOptions -> Bool" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe final set of flags which were picked for this package*\t*\t*\n\n" }, "label": "flagAssignment", "tags": [], "detail": ":: LocalBuildInfo -> FlagAssignment" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nThe installation directories for the various different\n kinds of files\nTODO: inplaceDirTemplates :: InstallDirs FilePath*\t*\t*\n\n" }, "label": "installDirTemplates", "tags": [], "detail": ":: LocalBuildInfo -> InstallDirTemplates" }, { "kind": 3, "insertTextFormat": 1, "documentation": { "kind": "markdown", "value": "*Defined in 'Distribution.Simple.LocalBuildInfo'*\n*\t*\t*\n\n\nUse -split-sections with GHC, if available*\t*\t*\n\n" }, "label": "splitSections", "tags": [], "detail": ":: LocalBuildInfo -> Bool" } ], "jsonrpc": "2.0", "id": 199 } } 0.11s --> { "jsonrpc": "2.0", "params": { "tag": "WaitForShakeQueue" }, "method": "test", "id": 200 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:GetParsedModule (took 0.06s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressReport", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "report", "message": "467/469" }, "token": "472" }, "method": "$/progress" } } [DEBUG] finish: C:ProduceCompletions (took 0.25s) <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: C:ProduceCompletions (took 0.25s)" }, "method": "window/logMessage" } } <-- { "tag": "RspCustomServer", "contents": { "result": null, "jsonrpc": "2.0", "id": 200 } } [DEBUG] finish: kick (took 0.33s) --> { "jsonrpc": "2.0", "params": null, "method": "shutdown", "id": 0 } <-- { "tag": "NotLogMessage", "contents": { "jsonrpc": "2.0", "params": { "type": 4, "message": "finish: kick (took 0.33s)" }, "method": "window/logMessage" } } <-- { "tag": "NotWorkDoneProgressEnd", "contents": { "jsonrpc": "2.0", "params": { "value": { "kind": "end" }, "token": "472" }, "method": "$/progress" } } <-- { "tag": "RspShutdown", "contents": { "result": null, "jsonrpc": "2.0", "id": 0 } } --> { "jsonrpc": "2.0", "params": [], "method": "exit" } name | success | samples | startup | setup | userTime | delayedTime | totalTime | maxResidency | allocatedBytes ---------------------- | ------- | ------- | ------- | ----- | -------- | ----------- | --------- | ------------ | -------------- completions after edit | True | 100 | 27.52s | 0.00s | 9.48s | 14.24s | 23.75s | 499MB | 57362MB